加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-05-23 16:58:42 所属栏目:Linux 来源:互联网
导读:我正在使用rsync脚本进行目录复制.我让它只同步新的和修改过的文件或目录,但我不喜欢它复制重命名的文件或目录作为新文件或目录,保持文件不同步.我还设置了1MB的带宽限制,因为这将在营业时间运行.这是我的脚本: rsync -zvru --bwlimit=1024 /mymounts/test1/

我正在使用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.但我建议你在生产之前使用这种方法进行大量的测试.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读