我正在使用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.但我建议你在生产之前使用这种方法进行大量的测试.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。