使用rsync同步文件夹而不覆盖Mac OS X上的同名文件


3

我想同步两个目录的内容。

  • 如果两个文件具有相同的名称但大小不同,则不覆盖但创建副本
  • 如果两个文件具有相同的名称和大小,则不重复。
  • 以递归方式工作

到目前为止,我发现了以下可能有效的命令

 $ rsync -varE --progress ~/folder /volumes/server/folder

但我不完全确定-E国旗的作用。它是由bananica.com上的用户建议的,但在手册中看不到它的描述。这会成功吗?


1
从手册页rsync:-E, - 可执行性保护可执行性
Der Hochstapler

1
有一种有趣的方法可以使用rsync构建与Apples Time Machine类似的功能。我从来没有用过它,但也许这适合你:blog.interlinked.org/tutorials/rsync_time_machine.html
Der Hochstapler

你能具体说明为什么这些规则如此。例如,通过“具有相同的名称和大小”,您认为这是对文件是否相同的测试吗?并且通过“相同名称但不同大小”这是指这些已更改的文件?
Chris2048

同名,相同大小=文件相同; 同名但大小不同=文件已更改。有时复制文件夹而不覆盖将创建我不想要的相同文件的副本。注意,我在mac上这样做。
Adam-E

Answers:


5

-E实际上保留了OS X上的扩展属性,但-a(--archive)暗示-p( - perms)暗示--executability。

-b(--backup)在通常被覆盖的文件末尾添加波浪号:

rsync -ab ~/folder /Volumes/server/

-b --suffix _old 将file.txt重命名为file.txt_old

rsync默认比较文件大小和修改时间。--size-only仅比较尺寸。-c比较校验和,但速度较慢。


完善。我刚刚对此进行了测试,这正是我所追求的。非常感谢。
Adam-E

@LauriRatna抱歉忘了问,这个命令会跳过复制相同的文件,从而加快进程吗?
Adam-E

1
是啊。您可以添加-v以查看它复制的文件。
Lri 2013年
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.