rsync --compare-dest 如何工作

oro*_*hen 5 rsync file-comparison

我知道有一个非常类似的问题在这里,但接受的答案无关使用rsync,和OP的解决方案并不在我的情况适用。

我正在尝试从 CentOS 存储库中获取与本地存储库不同的所有更新,方法是将它们与存储库的磁盘备份进行比较:

rsync -avh --dry-run --compare-dest=/run/media/user/centos6/updates/x86_64/Packages /home/REPOS/6/updates/x86_64/Packages/ updates
Run Code Online (Sandbox Code Playgroud)

但是,试运行表明所有包裹都将被转移,而不仅仅是新包裹。

做一个不同的试运行,就像我从 repo 复制到磁盘一样,只传输新包:

rsync -avh --dry-run /home/REPOS/6/updates/x86_64/Packages/ /run/media/djones/centos6/updates/x86_64/Packages
Run Code Online (Sandbox Code Playgroud)

所以 rsync 显然能够区分新文件,但由于某种原因, compare-dest 选项似乎仍然不起作用。

快速而肮脏的解决方案是使用第二个命令简单地转储文件列表,然后将其提供给 rsync。但我真的很想以“正确”的方式做到这一点。

小智 1

我也遇到了同样的麻烦,你必须这样做:

rsync -avh --dry-run                                          \
      --compare-dest=/run/media/user/centos6/updates/x86_64/  \
      /home/REPOS/6/updates/x86_64/Packages                   \
      /path/to/updates
Run Code Online (Sandbox Code Playgroud)

注意 --compare-dest是源文件夹的父文件夹Packages,不要放在/源文件夹的末尾!