如何仅将不同的文件复制到另一个目录(大目录)?


14

我有目录a和目录b。他们很大。b与a几乎相同。“几乎”表示4-5个文件有所不同,我不知道它们是什么。我想将b复制到a,但仅复制不同的文件。我在狂欢。

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


rsync一个选择吗?
鲍比(Bobby)

是的,但是我对rsync不太了解。
janesconference 2011年

Answers:


17

您可以使用rsync此命令,我使用的命令是rsync -tr "folder to copy from" "folder to copy to"

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


1
注意此命令。它将删除所有相同的文件。我运行了它,几乎失去了一切!!
Arvind K.

@Arvind我不知道您使用了什么命令导致您丢失数据,但这不是rsync -tr。阅读手册页。
Tog

18

也可以通过使用old old来做到这一点cp

感谢srcspider提醒我使用-T

cp -ruT old-dir new-dir


+1我习惯于跨机器同步,却忘记了优雅的方式。
Tog

不适用于我:(
janesconference 2011年

那实际上是不错的gnu cp。;-)
Keith

1
在OS X上,-u选项不存在。我只是使用cp -r old-dir new-dir,因为我不必比较日期。
让·弗朗索瓦·比彻姆

不起作用。我不确定这是否是某种名称约定,但是cp -ru folder-A folder-B只会在Folder-B内复制Folder-A,而不是在B内复制A的内容并覆盖,这将是理想的效果。
srcspider

1

另一个不错的选择是Unison(http://www.cis.upenn.edu/~bcpierce/unison/),尤其是在没有真正的“来源”和“目的地”的情况下。每个目录都是一个根,Unison会对其进行同步,并保留元数据以供将来同步。它提供了命令行和GUI选项,也可以通过cron轻松计划。

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


1

可以使用良好的cp来完成,尽管格式与上面所述略有不同。这是我的操作方式:

cp -ru --target-directory="destination_path" source_path/*

1

您可以区分两个目录。

差异-r dir1 dir2

它会显示不同文件的列表

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.