假设rsync --recursive --ignore-existing foo bar
正在为名为 的大型目录树运行复制命令foo
,但该命令过早中断。例如,由于目标机器突然断电。
再次运行上述命令可以为已经存在的任何文件/目录节省大量时间完全复制到目的地bar
。但是正在复制过程中的任何文件又如何呢?据推测,该文件以不完整/损坏的状态存在于目的地?当然,将其简单地忽略为“已经完成的文件”是非常不可取的。
rsync 是否可以在没有指示的情况下智能地处理这种(极端运行的)场景? (如果是这样,怎么做?)或者只有在通过更多或不同的标志进行特别指示时才这样做?
令人沮丧的是,无论是手册页还是该网站上任何模糊相关的问题或答案似乎都没有以清晰的方式解决这个非常重要的细节。 (抱歉,如果我看起来不太好。)
答案1
您可以使用该-c
选项通过计算和比较文件的校验和而不是日期和大小来使 rsync 跳过文件:
-c, --checksum
skip based on checksum, not mod-time & size
这应该再次复制所有内容不正确的文件。
您还必须删除该--ignore-existing
标志,否则目标上已存在的文件将不会被传输。