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

swi*_*itz 33 unix macos shell terminal

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

我找到了这个,但我的shell说-u的不是一个有效的论点.

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

谢谢.

Ker*_* SB 55

始终rsync用于复制文件,因为它很棒.

要忽略现有文件:

rsync --ignore-existing --recursive /src /dst
Run Code Online (Sandbox Code Playgroud)

请阅读手册并搜索许多很多很好的例子.特别是与ssh的组合rsync因其--partial选项而成为缓慢和不可靠连接的绝佳工具.添加--verbose以查看正在复制的文件.请务必查看有关保留权限,用户和时间戳的大量选项.

  • 在rsync工作时显示进度:`rsync --human-readable --progress --ignore-existing --recursive/src/dst` (6认同)

sar*_*old 8

rsync(1)当源和目标位于两台不同的计算机上时,它们会非常闪耀.当源和目标位于同一台计算机上时,它仍然是更好的工具.

一个简单的用法看起来像:

rsync -av /path/to/source /path/to/destination
Run Code Online (Sandbox Code Playgroud)

如果您确信两个位置中存在的任何文件都相同,请使用以下--ignore-existing选项:

rsync -av --ignore-existing /path/to/source /path/to/destination
Run Code Online (Sandbox Code Playgroud)

为了完整起见,当我用来rsync(1)在远程系统上进行备份时,我最喜欢的命令是:

rsync -avz -P /path/to/source hostname:/path/to/destination
Run Code Online (Sandbox Code Playgroud)

-z请求压缩(我不会理会本地,但在较慢的网络链接它可以使一个很大的区别),并且-P询问--partial--progress-这将重新使用部分文件传输,如果它必须重新启动,并显示一个方便的进度条指示器.