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

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

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

答案1

还有更多属性同步比前面的答案提到的要多。你应该自己研究一下:

man rsync

但对于你的问题我建议:

rsync -a --delete X Y

这样,接收方 (Y) 将删除其所拥有的任何不在 X 中的文件。不过,请确保您操作正确。如果使用不当,root 很容易导致系统崩溃... :)

答案2

看一眼rsync(1). 它的目的几乎就是完成您想要做的事情。

rsync -av X Y

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

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

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

答案3

你可能会使用Fitus/Zaloha.sh。它首先计算必要的同步操作,将其呈现给您,要求您确认,然后执行它们:

$ Zaloha.sh --sourceDir="X" --backupDir="Y"

答案4

我认为您在选项 -u(更新)中寻找的一些功能实际上存在于此选项中:

“--ignore-existing”-跳过更新接收器上存在的文件

相关内容