rsync 无法准确同步大型 postgres 转储(约 30GB)

rsync 无法准确同步大型 postgres 转储(约 30GB)

我有一个很大的 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"

选择这两个选项中的哪一个取决于网络速度与处理器速度。

相关内容