跳过存在的文件时复制文件 - Unix

时间:2011-12-06 01:47:35

标签: macos shell unix terminal

我想要一个大文件夹(~100GB)并将其复制到另一个文件夹。我希望它跳过任何存在的文件(不是文件夹),所以如果/music/index.html不存在,即使/music目录已经存在,它仍会复制。

我找到了this,但是我的shell说-u不是一个有效的参数。

我不知道rsync是如何运作的,所以如果这是一个更好的解决方案,请告诉我。

感谢。

2 个答案:

答案 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}} - 如果必须重新启动,它将重新使用部分文件传输,并显示一个方便的进度条指示器。