标签: rsync

校验和以验证 rsync 传输

因此,rsync 在决定传输内容(即文件中的块)的过程中运行一些校验和。但是,是否有任何理由比正常网络传输更信任您最终在接收端获得的文件呢?rsync 完成后我应该运行校验和来验证数据吗?使用预检查(即 --checksum 选项)重新运行 rsync 是否开启了实现此目的的可接受方法?

rsync file-transfer checksum

6
推荐指数
1
解决办法
1万
查看次数

为什么 FileZilla SFTP 文件传输最大上限为 1.3MiB/秒,而不是使可用带宽饱和?rsync 和 WinSCP 甚至更慢

我正在从服务器下载,使用 FileZilla 的下载速度最高为 1.3MiB/秒,但我可以开始并发下载,它们也将以 1.3MiB/秒的速度下载。那么为什么我不能以超过 1.3MB/s 的速度仅下载一个文件并接近饱和可用带宽(~6+MB/s)?

我知道我可以使用其他一些支持分段下载的 SFTP 客户端,例如 lftp,知道其他开源的好客户端吗?

但我仍然想知道是什么限制了一个文件的下载速度为 1.3MB/s,是 TCP 和缓冲区等的一些技术限制还是一些配置问题?我检查并确定根本没有为 FileZilla 启用流量限制。

我也试过 rsync,它比 FileZilla/SFTP 更糟糕。我也尝试过 WinSCP,无论使用哪种 SCP/SFTP 方法,它都是最慢的。因此,与其他传输方法相比,FileZilla 以 1.3MB/s 的恒定传输速度相当不错。

如果有人对为什么传输峰值为 1.3MB/s 有很好的解释,我真的很想知道,以及是否可以在不诉诸分段下载的情况下增加这一点。服务器正在运行 OpenSSH 6.7p1 (Debian) 客户端是 Windows 上的 FileZilla。

更新:为了响应 Martin 的信息(见下面他的回答),我补充说服务器和正在下载的客户端之间的 ping 是 180 毫秒到 190 毫秒。此外,cpu 使用率非常低,最多 2% 到 8%。我尝试了最新版本的 winscp 5.73 和 sftp 模式,我得到了 555kb/s 和大约 805kb/s 最大的 scp 模式。而如果我在 Filezilla 中启动辅助并发传输,我也会得到恒定的 1.3MiB/s。

那么,正如 Martin 和 Michael 所提到的,服务器的 180 毫秒延迟是否会成为数学上的限制因素?或者还有什么可以归咎于我可以提高吞吐量?如果没有,如果有人知道任何其他(如 lftp 但在 Windows 上运行良好)开源下载器,它是安全的并支持分段下载,我将不胜感激。

ssh rsync sftp scp winscp

6
推荐指数
1
解决办法
2万
查看次数

Rsync - 设置 rsync 用户及其权限

我将在两个网络服务器之间设置 rsync。我的目标是从我的主服务器上备份数据,以防主服务器崩溃。我的问题与在主服务器上为 rsync 目的设置用户帐户有关。

出于显而易见的原因,我不想在这里使用我的“root”用户帐户。因此,我的目标是设置另一个仅用于 rsync 目的的帐户。据我了解,该用户需要对我需要传输的所有文件(apache 配置、用户 linux 文件、www-data)具有读取权限。

如何最好地设置此类权限?我应该授予 rsync 用户 root 权限还是有任何更安全的方法来为此类备份创建用户?

security rsync user-permissions

6
推荐指数
1
解决办法
1万
查看次数

gsutil rsync 上的同步阶段很慢?

我刚刚开始使用 GCS 作为我的网络服务器的备份。一台服务器有 120 万个 JPEG(3.5TB),并且所有这些都在 10 个小时左右的时间内完美同步。

另一个有 250 万个 JPEG(尽管只是缩略图/预览 - 总共 300GB)。我第一次这样做时,“构建同步状态”很快就完成了 250 万次。几分钟。虽然我的会话被中断了(wifi 掉线了),当我通过 SSH 尝试再次运行它时,“在源列表中”提示迅速咬住了 10000、20000、30000。然后几乎停止了。半小时后,才到了三十万。我知道它也必须确定目的地有哪些文件,但我认为这不会显着减慢“在源列表中...”的回声?

它是否表明我的文件系统有问题,如果是,我应该检查什么?

还是出于某种原因,这是预期的行为?

尝试将 gsutil rsync 与 200 万个文件一起使用到一个存储桶中是个坏主意吗?我找不到谷歌关于一个存储桶中可以放置多少文件的指南,所以我假设它是数十亿/无限的?

FWIW 文件都在嵌套的子目录中,任何一个目录中的文件都不超过 2000 个。

谢谢

编辑:我使用的确切命令是:

gsutil -m rsync -r /var/www/ gs://mybucketname/var/www
Run Code Online (Sandbox Code Playgroud)

rsync google-cloud-storage google-cloud-platform gsutil

6
推荐指数
1
解决办法
2701
查看次数

使用 rsync 保留所有权,无需 root

我想从一台机器执行增量备份(针对整个文件系统)。rsync这确实会,但是我还想保留文件所有权 - 意思是可以恢复它。

如果不rsync以 root 身份在目标机器上运行(存储备份),是否可以做到这一点?

一些想法...

  • 有没有办法以允许chown非root用户的方式挂载文件系统(FUSE?)?(我想可能需要noexec禁止提升。)
  • 在元数据文件而不是文件系统本身中存储和恢复所有权的某种方法?
  • tar可以存储文件所有权,尽管让它与 rsync 或增量备份一起使用会更复杂一些。能够像常规文件系统一样浏览备份也很好。
  • 也许某种假的根环境?虚拟机可以工作,但最好避免相关的维护和性能开销。

backup rsync root owner

6
推荐指数
1
解决办法
1万
查看次数

使用 rsync 的 BackupPC 因“协议版本不匹配 -- 您的外壳干净吗?”而失败。

我刚刚在 Debian 机器中安装了 BackupPC,以将其用作备份服务器。如您所知,该软件使用 rsync 等。使用 rsync 选项时,它失败。

  • 服务器:Debian Jessie。BackupPC 3.3.1 从源代码构建,由用户“backup-user”执行。使用默认选项从源代码构建的 Rsync 3.1.2。

  • 客户:Debian Jessie。使用默认选项从源代码构建的 Rsync 3.1.2。

失败后,可以在 BackupPC 的日志中找到使用的 rsync 命令。在以 BackupPC 用户身份登录的 shell 中尝试该命令时,我遇到了“协议版本不匹配——你的 shell 是否干净?”的问题。错误。命令是:

/usr/bin/ssh -q -x -l backup-user 192.168.10.20 /usr/local/bin/rsync
--server --sender --numeric-ids --perms --owner --group -D --links
--hard-links --times --block-size=2048 --recursive --ignore-times .
/home/backup-user/test
Run Code Online (Sandbox Code Playgroud)

向发送到客户端的 rsync 命令添加一些详细信息,它说(注意远程协议版本):

FILE_STRUCT_LEN=24, EXTRA_LEN=4

(Server) Protocol versions: remote=168430090, negotiated=31
protocol version mismatch -- is your shell clean? 
(see the rsync man page for an explanation) 
[sender] …
Run Code Online (Sandbox Code Playgroud)

ssh rsync backuppc

6
推荐指数
0
解决办法
1290
查看次数

使用 rsync 时忽略正在使用(正在写入)的文件

我有一个 SFTP 服务器,客户端不断上传大文件。我想定期将所有完整(完全上传)的文件复制到另一台机器上进行处理。我不想复制正在积极写入的文件。有没有办法做到这一点?我目前正在使用 rsync,但我愿意切换到其他东西。

rsync

6
推荐指数
1
解决办法
7206
查看次数

在停滞的连接上强制 rsync 超时

我遇到了一个有缺陷的循环数据移动器节点问题,我正在从中同步数据。其中一个节点不断断开与我的数据来源的文件系统的数据连接,需要重新连接,这可能需要几分钟的时间。在此期间,该特定文件上的 rsync 不会中止,它只是挂起长达几分钟,直到下载继续。因为这是时间关键的数据,所以这不是一个可行的选择,而是应该在连接停止时尽快断开连接,然后重新连接(无论如何都会将负载平衡到下一个节点)。

谁能想到一种方法来告诉 rsync 中止已停滞超过 20 秒的传输?

损坏的数据移动节点的操作员对这个问题的反应很慢,他们意识到了这一点,但目前没有采取任何行动,所以我需要在最后找到解决方案。

我尝试过使用 --timeout 选项,但是当数据连接停止时这似乎不起作用。

rsync

6
推荐指数
1
解决办法
6476
查看次数

“协议版本不匹配——你的外壳干净吗?” 外壳干净时出现 rsync 错误

我正在尝试使用 rsync 下载文件,其中 rsync 通过服务器上的 SSH 以守护进程模式运行,并在客户端上收到以下错误:

rsync -a myserver:/remote/path/ localdestdir/
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(176) [Receiver=3.1.1]
Run Code Online (Sandbox Code Playgroud)

服务器在用户的 .ssh/authorized_keys 中有这个:

command="rsync --config=/path/to/engine-rsyncd.conf --server --daemon ." ssh-rsa ...
Run Code Online (Sandbox Code Playgroud)

我读过所有我能找到关于这个问题,正如大家所暗示的,经检查发现外壳是干净的,它是干净的

ssh myserver false >out.tmp
Run Code Online (Sandbox Code Playgroud)

创建一个零长度文件 out.tmp (如果我从服务器上的 authorized_keys 中删除“command=...”)。

我还尝试在服务器上将用户的 shell 设置为 rssh 而不是 bash - 同样的事情。

客户端和服务器都运行 Ubuntu 16.04,因此它们具有相同版本的 rsync(3.3.1,协议 31)。

还能是什么?我尝试在 rsync 和 SSH 中启用详细日志记录,但日志没有给我任何线索。rsync 守护进程不会记录任何超过

2018/02/12 15:14:24 [6215] …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu ssh rsync

6
推荐指数
1
解决办法
5269
查看次数

AWS cli 是否在与 s3 同步时执行数据完整性检查?

我一直在研究使用 AWS cli 进行数据完整性检查,以验证备份是否已从 Linux 文件服务器正确传输到 AWS s3。同样,我想验证将文件从备份恢复到 Linux 文件服务器时是否也正确传输。

我检查了 S3 上与对象一起存储的 etag,因为它似乎是 md5sum。但是,如果在大文件的情况下将文件作为分段传输,则 etag 将不再有效。

但在我进一步尝试对每次刚刚同步到 S3 的内容进行 MD5sum 之前,真的有必要这样做吗?当通过互联网在 Linux 文件系统之间使用 rsync 时,对传输的文件进行 md5sum 来验证它们并不常见。因为假设我认为 rsync 已经解决了这个问题?

所以我想知道 AWS clisync 是否已经为我们处理了数据完整性检查?

rsync amazon-s3 md5 aws-cli

6
推荐指数
1
解决办法
6981
查看次数