比较2个目录并复制第3个目录中的差异

Modified on: Wed, 06 Nov 2019 09:40:02 +0800

运行ubuntu 12.04,我想比较2个目录,比如folder1 /和folder2 /,并复制任何与folder3 /不同的文件。还有嵌套文件,因此也应复制匹配的子目录

是否有一个可以帮助我的命令?我可以获得运行的已更改文件的完整列表:

rsync -rcnC --out-format="%f" folder1/ folder2/

但是rsync似乎没有能力在不同的目标目录上“导出”这些文件。我可以将列表传递给cp或其他程序,以便复制文件,同时创建目录吗?例如,我试过

rsync -rcnC --out-format="%f" folder1/ folder2/ | xargs cp -t folder3/

但这也不会保留目录,它只会复制folder3 /

中的所有文件

作者:,periklis

最佳答案

使用--compare-dest。

从手册页:

  

- compare-dest = DIR -
      此选项指示rsync在目标计算机上使用DIR作为附加层次结构,以将目标文件与传输进行比较(如果目标目录中缺少文件)。如果在DIR中找到与发件人文件相同的文件,则该文件将不会传输到目标目录。这对于仅创建从早期备份更改的文件的稀疏备份非常有用。

首先使用--dry-run

检查语法

rsync -aHxv --progress --dry-run --compare-dest=folder2/ folder1/ folder3/

然后,一旦您对输出感到满意:

rsync -aHxv --progress  --compare-dest=folder2/ folder1/ folder3/

这个链接对--compare有一个很好的解释最大范围。


相关问答

添加新评论