在 bash 中同步两个本地文件夹

Jof*_*sey 25 linux

我的主目录中有一个大文件夹“X”,在闪存驱动器上有一个过时的副本——Y。什么是类似的rm Y; cp X Y,但不覆盖现有文件?

小智 27

rsync 的属性比上一个答案提到的要多得多。你应该自己研究一下:

man rsync
Run Code Online (Sandbox Code Playgroud)

但是对于您的问题,我建议:

rsync -a --delete X Y
Run Code Online (Sandbox Code Playgroud)

这样,接收者 (Y) 将删除它拥有的任何不在 X 中的文件。但请确保您做得对。以 root 身份错误地使用很容易杀死您的系统... :)


Kri*_*ost 16

看看rsync(1)。它的目的是几乎完全符合您的要求。

rsync -av X Y
Run Code Online (Sandbox Code Playgroud)

它支持通过自己的协议或 ssh 进行远程复制,但也可以在本地使用。

根据您想要的确切行为,您可能还想传递该--update选项。这将告诉 rsync 不要覆盖目标上已经存在的文件并且比源中的文件新。

如果您想删除额外的文件(即存在于 Y 中但不存在于 X 中的文件),您可以添加该--delete选项。