我有一个很大的 postgres 转储文件(~30GB),正在进行 rsynced(在两台 Ubuntu 机器之间,都使用 rsync 3.1.1,协议 v31)。
我发现同步的文件与正确的文件大小匹配,但不匹配 MD5 检查。
这有什么原因吗?rsync delta 算法是否无法在 30GB 左右的超大文件上正常工作?问题似乎是在文件大小达到 20GB 左右时开始的。
/usr/bin/rsync -av -e "ssh -l username -p 22" "192.168.1.50:/data/backups/" "/data/backups"
我还关闭了 rsync 上的增量功能(使用 -W),因此当前命令是
/usr/bin/rsync -avW -e "ssh -l username -p 22" "192.168.1.50:/data/backups/" "/data/backups"
答案1
rsync
使用文件的时间戳和大小作为快捷方式来决定是否需要传输。如果您更新文件的内容但设法保持大小和时间不变,则该文件将被跳过rsync
。
最有效的解决方案是rsync
在文件修改时通过更新文件的修改时间来提供帮助。
否则,你需要告诉rsync
他们忽略快捷方式并直接复制文件
rsync --whole-file -av [email protected]:"/data/backups/" "/data/backups"
或者执行完整的校验来查看文件是否已更改
rsync --checksum -av [email protected]:"/data/backups/" "/data/backups"
选择这两个选项中的哪一个取决于网络速度与处理器速度。