因此,rsync 在决定传输内容(即文件中的块)的过程中运行一些校验和。但是,是否有任何理由比正常网络传输更信任您最终在接收端获得的文件呢?rsync 完成后我应该运行校验和来验证数据吗?使用预检查(即 --checksum 选项)重新运行 rsync 是否开启了实现此目的的可接受方法?
我想从一台机器执行增量备份(针对整个文件系统)。rsync这确实会,但是我还想保留文件所有权 - 意思是可以恢复它。
如果不rsync以 root 身份在目标机器上运行(存储备份),是否可以做到这一点?
一些想法...
chown非root用户的方式挂载文件系统(FUSE?)?(我想可能需要noexec禁止提升。)tar可以存储文件所有权,尽管让它与 rsync 或增量备份一起使用会更复杂一些。能够像常规文件系统一样浏览备份也很好。我刚刚在 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) 我有一个 SFTP 服务器,客户端不断上传大文件。我想定期将所有完整(完全上传)的文件复制到另一台机器上进行处理。我不想复制正在积极写入的文件。有没有办法做到这一点?我目前正在使用 rsync,但我愿意切换到其他东西。
我遇到了一个有缺陷的循环数据移动器节点问题,我正在从中同步数据。其中一个节点不断断开与我的数据来源的文件系统的数据连接,需要重新连接,这可能需要几分钟的时间。在此期间,该特定文件上的 rsync 不会中止,它只是挂起长达几分钟,直到下载继续。因为这是时间关键的数据,所以这不是一个可行的选择,而是应该在连接停止时尽快断开连接,然后重新连接(无论如何都会将负载平衡到下一个节点)。
谁能想到一种方法来告诉 rsync 中止已停滞超过 20 秒的传输?
损坏的数据移动节点的操作员对这个问题的反应很慢,他们意识到了这一点,但目前没有采取任何行动,所以我需要在最后找到解决方案。
我尝试过使用 --timeout 选项,但是当数据连接停止时这似乎不起作用。
我正在尝试使用 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) 我一直在研究使用 AWS cli 进行数据完整性检查,以验证备份是否已从 Linux 文件服务器正确传输到 AWS s3。同样,我想验证将文件从备份恢复到 Linux 文件服务器时是否也正确传输。
我检查了 S3 上与对象一起存储的 etag,因为它似乎是 md5sum。但是,如果在大文件的情况下将文件作为分段传输,则 etag 将不再有效。
但在我进一步尝试对每次刚刚同步到 S3 的内容进行 MD5sum 之前,真的有必要这样做吗?当通过互联网在 Linux 文件系统之间使用 rsync 时,对传输的文件进行 md5sum 来验证它们并不常见。因为假设我认为 rsync 已经解决了这个问题?
所以我想知道 AWS clisync 是否已经为我们处理了数据完整性检查?
我在 linux 系统上使用 rsync 来同步本地磁盘和连接的 USB 驱动器之间的目录。我遇到的问题是,每天在服务器上创建备份的第 3 方系统实际上更改了嵌套在备份深处的目录的名称。该目录包含备份所需的大部分数据。当 rsync 查看目录时,它看到名称已更改并认为它是一个全新的目录。所以我在 USB 驱动器上的 rsync 副本在它运行的每一天都有一个新目录。
我已经编写了实际将目录名称改回的脚本,但这是一种繁琐的方法!
我正在寻找一种“优雅”的方式来处理这个问题。是否可以创建指向保持不变的目录的链接?rsync 是否可以配置为检测目录是否相同,即使名称已更改?我相信以前有人不得不处理这个问题!
使用 rsync,如何在使用 --files-from 参数复制时重命名文件?我有大约 190,000 个文件,每个文件在从源复制到目标时都需要重命名。我计划将文本文件中的文件列表传递给 --files-from 参数。
有人对 HDFS 前向同步有什么好的建议吗?(“前向同步”与“双向同步”相反)
基本上我有大量的文件要放入 HDFS。它太大了,以至于我经常会在它完成之前失去连接。我想做的只是对我的文件上传做一个“简历”。但是hadoop fs -put只会再次上传整个目录(或抱怨它是否存在)。
有人有继续不完整的hdfs上传的好方法吗?