小编San*_* P.的帖子

如何使用 RSYNC 获取未更改的文件硬链接和附加文件复制到本地 + 附加?

我试图找出一种使用 rsync(一次或多次)和可能的其他命令(例如 cp -lr)来完成以下操作的方法:

  1. 将远程文件夹 A 同步到本地文件夹 B
  2. 我已经有一个本地文件夹 C,它是 A 的先前同步
  3. 我希望在 C 和 A 之间未更改的文件在 B 中创建为硬链接
  4. 我希望将 A 中的新文件传输回 B
  5. 我希望已在 A 中删除的文件,而不是在 B 中进行硬链接或硬链接后删除。
  6. 我希望 A 中已修改(通过附加数据)的文件从 C 本地复制到 B,并且只传输附加字节并将其附加到新副本。

我知道的一些限制可能有助于找到解决方案:

  • A中有两种文件:
    1. 不可变的,要么是新建的,要么是删除的。
    2. 可变的,总是通过附加数据来修改,也可以删除。
  • 这两种文件很容易区分,因为每个组都有一个固定的前缀,因此任何命令都可以针对任一组或两者。

我目前的解决方案是使用

rsync -av --link-dest C remote:A B
Run Code Online (Sandbox Code Playgroud)

但这有一个缺点,即附加文件被完全传输,体积增加了 10 倍以上。

欢迎对此解决方案进行任何改进,如果所有传输都使用 rsync 完成,效果会更好。

注意:使用几轮 rsync 来实现它是可以的,只要 C 没有改变,在这种意义上缺乏原子性就不是问题。

linux sync rsync file-transfer command-line

5
推荐指数
1
解决办法
1368
查看次数

标签 统计

command-line ×1

file-transfer ×1

linux ×1

rsync ×1

sync ×1