在rsync中处理重命名的文件或目录

前端之家收集整理的这篇文章主要介绍了在rsync中处理重命名的文件或目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用rsync脚本进行目录复制.我让它只同步新的和修改过的文件或目录,但我不喜欢它复制重命名文件或目录作为新文件或目录,保持文件不同步.我还设置了1MB的带宽限制,因为这将在营业时间运行.这是我的脚本:
rsync -zvru --bwlimit=1024  /mymounts/test1/ /mymounts/test2

如果有人重命名某些内容,仍然只复制新文件修改过的文件,如何保持文件和目录同步?这是有问题的文件

ls "/mymounts/test1/some stuff"
new directory  newfile1.txt  newfile3.txt  renamedFile.txt

ls "/mymounts/test2/some stuff"
new directory  newfile1.txt  newfile2.txt  newfile3.txt  renamedFile.txt

或者是否有办法将重命名文件移动到另一个目录说:
/ mymounts / VerControl?

解决方法

如果源目录和目标目录上的文件系统支持链接,则可以使用rsync处理移动和重命名文件.我们的想法是让rsync在真正传输之前重建硬链接.你可以找到 a brilliant explanation here.

我们最终得到了一个简单的解决方案,在源/目标目录中创建一个隐藏的硬链接树,基本脚本可能是这样的:

# Name of hidden directory
Shadow=".rsync_shadow"

# do real sync
rsync -ahHv --stats --no-inc-recursive --delete --delete-after "$Source"/ "$Target"

# update/create hidden dir of hard links in source
rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"

# update/create hidden dir of hard links in target
rsync -a --delete --link-dest="$Target" --exclude="/$Shadow" "$Target"/ "$Target/$Shadow"

我有an example script on GitHub.但我建议你在生产之前使用这种方法进行大量的测试.

猜你在找的Linux相关文章