我有目录 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
它将显示不同的文件列表