【问题标题】:Copy files while skipping over files that exist - Unix [closed]在跳过存在的文件时复制文件 - Unix [关闭]
【发布时间】:2012-01-13 17:27:03
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • rsync总是是更好的解决方案。是的,它好。
  • 这个问题应该可以移到unix.stackexchange.com

标签: macos shell unix terminal


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    总是使用rsync 来复制文件,因为它很棒。

    忽略现有文件:

    rsync --ignore-existing --recursive /src /dst
    

    请阅读manual 并四处搜索许多很棒的示例。尤其是与 ssh 的结合使rsync 成为一个很好的工具,因为它的--partial 选项可以解决慢速和不可靠的连接。添加--verbose 以查看正在复制哪些文件。请务必查看有关保留权限、用户和时间戳的众多选项。

    【讨论】:

    • 这是递归的还是我需要添加-r
    • 完美,已经启动并运行。我可以通过以详细模式 (-v) 运行来判断它是否有效。谢谢!
    • 要在 rsync 工作时显示进度,请使用:rsync --human-readable --progress --ignore-existing --recursive /src /dst
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多