只复制差异?

Cli*_*ton 1 solaris cp

我想递归地将一个目录复制到另一个目录上,但是我只想复制差异。原因是我在 Solaris 上的快照卷上执行此操作,即如果我将 100gig 复制到已经包含 100gig 但只有 5gig 不同的目录,我不希望整个 100gig 被复制因为这将用 200gig 的数据填充磁盘(快照保存的 100gig 新数据和 100g 旧数据)。

我希望最终结果只占用 105gig 的空间(即 5 gig 的新数据和 100 gig 的旧数据)。

删除快照不是一个选项,因为我们需要一个快速回滚选项。

最好只在块的基础上复制差异,但即使只有在它们不同时才复制整个文件也可以。

-ucp将不是在目的地的文件的工作可能有较新的时间戳。

另外,我应该注意到源目录和目标目录位于不同的卷上。

我怎样才能做到这一点?

akt*_*ivb 5

Rsync 是您的工具:

rsync --archive source/ dest/
Run Code Online (Sandbox Code Playgroud)

存档只是一个复合选项,包括:

--recursive      # recurse into directories
--links          # copy symlinks as symlinks
--perms          # preserve permissions
--times          # preserve times
--group          # preserve group
--owner          # preserve owner
--devices        # preserve device files
--specials       # preserve special files
Run Code Online (Sandbox Code Playgroud)

如果你的系统上没有 rsync 你应该得到它。您可能可以使用其他工具创建其他解决方案,但是如果您正在寻找可以很好地完成这件事的程序(除非我误解了您的问题),那么您正在寻找的是 rsync。

  • 是的,rysnc 可能是正确的工具,但`--archive` 标志(就其本身而言)不足以满足提问者的需求。查看`--size-only`和`--checksum`和`--update`和`--ignore-existing`和`--inplace`选项。还有`--delete` 或类似的标志,通常与`--archive` 一起使用。 (2认同)