我怎样才能将一个(大)目录复制到另一个目录上并仅更改不同的文件?

我怎样才能将一个(大)目录复制到另一个目录上并仅更改不同的文件?

我有目录 a 和目录 b。它们很大。b 几乎与 a 相同。“几乎”意味着有 4-5 个文件不同,但我不知道它们是什么。我想将 b 复制到 a 上,但只复制不同的文件。我在 bash 中。

(不,我不能简单地删除 a 并用 b 替换它,因为 1)a 是版本控制的 2)完整复制(或 mv)会花费太多时间。我只想复制不同的文件)。

答案1

你可以使用rsync它来执行此操作,我使用的命令是rsync -tr "folder to copy from" "folder to copy to"

例如rsync -tr /home/me/stuff/* /home/me/otherstuff/

答案2

也可以用旧的方法来做到这一点cp

感谢 srcspider 提醒我使用-T

cp -ruT old-dir new-dir

答案3

另一个不错的选择是 Unison (http://www.cis.upenn.edu/~bcpierce/unison/),特别是如果实际上没有“源”和“目标”。每个目录都是一个根目录,Unison 会同步它们并保留元数据以供将来同步。它提供了命令行和 GUI 选项,也可以轻松地通过 cron 进行安排。

我使用它将我的 Dropbox 备份到无法运行 Dropbox 客户端的本地 NAS 设备。

答案4

您可以比较这两个目录的差异。

diff -r 目录1 目录2

它将显示不同的文件列表

相关内容