使用 rsync 时如何避免不必要的删除和重新复制移动的文件夹?

使用 rsync 时如何避免不必要的删除和重新复制移动的文件夹?

我读到 rsync 无法检测移动的文件夹,只需删除它们并将其重新复制到新的文件夹结构中即可。

由于我对主副本所做的唯一更改是简单地引入一个顶级文件夹来包含我的原始文件,即:

folder1
folder2
folder3

进入

top\folder1
top\folder2
top\folder3

我想知道是否可以在备份副本中手动执行相同的操作,以某种方式修复两个顶级文件夹的修改时间,以便对 rsync 的后续调用能够正常运行。

这行得通吗?如果是这样,怎么办?如果没有,解决这个问题的推荐方法是什么?或者我应该首先使用不同的参数运行 rsync ? (而不是rsync -a --delete /mnt/SRC /mnt/DEST我目前正在使用的)

这些目录非常大,因此我想尽可能避免不必要的重新复制。

答案1

是的,您可以手动在备份副本中进行移动,然后运行 ​​rsync。您不需要改变修改时间;让 rsync 来做这件事。

像这样的重命名很难自动检测,因此手动复制它是通常的解决方案。

答案2

如果您愿意,您也不需要手动更新文件的修改时间。

如果您不特别关心镜像新的目录结构,而只需要文件,您也可以 rsync --(options) /mnt/SRC/newdir/ /mnt/DEST。请注意 SRC 一侧的额外斜杠,否则您最终将重新复制所有内容。

答案3

建议的解决方案这里成功了:

rsync -vrt --size-only /src/ /dest/

--size-only 选项会导致rsync忽略时间戳,而 -t (保留修改时间)会导致rsync修复目标副本中任何不一致的修改时间。

相关内容