我想要一个大文件夹(~100GB)并将其复制到另一个文件夹。我希望它跳过任何存在的文件(不是文件夹),所以如果/music/index.html
不存在,即使/music
目录已经存在,它仍会复制。
我找到了this,但是我的shell说-u
不是一个有效的参数。
我不知道rsync
是如何运作的,所以如果这是一个更好的解决方案,请告诉我。
感谢。
答案 0 :(得分:53)
始终使用rsync
复制文件,因为它很棒。
忽略现有文件:
rsync --ignore-existing --recursive /src /dst
请阅读manual并搜索许多很棒的例子。特别是与ssh的组合使得rsync
成为一个很好的工具,可以通过--partial
选项实现缓慢和不可靠的连接。添加--verbose
以查看正在复制的文件。请务必查看有关保留权限,用户和时间戳的大量选项。
答案 1 :(得分:7)
rsync(1)
绝对闪耀。当源和目标位于同一台计算机上时,它仍然是更好的工具。
简单的使用方式如下:
rsync -av /path/to/source /path/to/destination
如果您确信两个位置中存在的任何文件都相同,请使用--ignore-existing
选项:
rsync -av --ignore-existing /path/to/source /path/to/destination
为了完整起见,当我使用rsync(1)
在远程系统上进行备份时,我最喜欢的命令是:
rsync -avz -P /path/to/source hostname:/path/to/destination
-z
请求压缩(我不会在本地打扰,但通过较慢的网络链接,它可以产生很大的不同),-P
要求--partial
和{{ 1}} - 如果必须重新启动,它将重新使用部分文件传输,并显示一个方便的进度条指示器。