我不确定什么可能导致丢失连接的损坏数据包问题,但您可能会发现rsync的–partial或–partial-dir选项在传输大文件时很有用,这样当您重新启动传输时它将继续传输离开而不必重新开始转移整个文件:
–partial-DIR = .rsync偏
所以您可以像这样修改原始命令:
rsync -rav --progress --partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
要么
rsync -rav --progress --partial-dir=.rsync-partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
请注意,对于此示例,我删除了-q( – quiet)选项并在第一个示例中添加了–progress选项,在第二个示例中添加了–partial-dir = .rsync-partial.
–partial和–partial-dir = .rsync-partial之间的区别在于,后者会创建一个目录,使得部分文件与完全传输的文件分开(如果这对您在接收(服务器端)方面很重要).
rsync manpage将进一步详细解释这一点,但我还要从手册页中指出一个重要的安全说明:
IMPORTANT: the –partial-dir should not be writable by other users or it is a security risk. E.g. AVOID “/tmp”.