有两个目录:a/
和b/
我想将所有文件(递归地)从a/
复制到b/
。
但是,如果文件的内容与现有的a
文件不同,我只想复制b
文件。如果相应的b
文件不存在,那么您仍然可以复制a
文件。
* by"相应的文件",我的意思是一个与父目录具有相同名称和相对路径的文件。
注意:的
我不想覆盖具有相同内容的b
文件的原因是因为b
目录正被另一个程序监控,我不想要该文件更改日期导致程序执行超出要求的更多工作。
我基本上在寻找一种在对每个文件执行差异检查时执行cp -rf a/ b/
的方法。如果文件不同,请执行复制;否则跳过副本。
我看到cp
有更新标记:
-u, --update
copy only when the SOURCE file is newer than the destination file or when the
destination file is missing
但这不起作用,因为我并不关心较新的文件;我关注不同的文件内容。
任何shell语言都可以 我一直试图通过将diff检查注入find命令来实现这一点:
find a/ ??? -exec cp {} b \;
这在两个目录之间似乎并不常见,所以我希望有一个优雅的命令行解决方案,因为我必须编写一个python脚本。
答案 0 :(得分:1)
您可以使用 rsync 来实现此目的。仅当源文件夹中有任何新更新时,才会更新文件或目录。
$rsync -av --progress sourcefolder destinationfolder