10.1.4. 复制语法

如下是用不同的工具复制整个 “./source“ 目录中的内容。

  • 本地复制: “./source“ 目录 → “/dest“ 目录

  • 远程复制:本地主机上的 “./source" 目录 → “user@host.dom“ 主机上的 “/dest“ 目录

rsync(8):

  1. # cd ./source; rsync -aHAXSv . /dest
  2. # cd ./source; rsync -aHAXSv . user@host.dom:/dest

你能够选择使用“源目录上的反斜杠”语法。

  1. # rsync -aHAXSv ./source/ /dest
  2. # rsync -aHAXSv ./source/ user@host.dom:/dest

或者,如下所示。

  1. # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest
  2. # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest

GNU cp(1) 和 openSSH scp(1):

  1. # cd ./source; cp -a . /dest
  2. # cd ./source; scp -pr . user@host.dom:/dest

GNU tar(1):

  1. # (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - )
  2. # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'

cpio(1):

  1. # cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest

你能够在所有包含 “.“ 的例子里用 “foo“ 替代 “.“,这样就可以从 “./source/foo“ 目录复制文件到 “/dest/foo“ 目录。

在所有包含 “.“ 的列子里,你能够使用绝对路径 “/path/to/source/foo“ 来代替 “.“,这样可以去掉 “cd ./source;“. 如下所示,这些文件会根据工具的不同,拷贝到不同的位置。

  • /dest/foo“: rsync(8), GNU cp(1), 和 scp(1)

  • /dest/path/to/source/foo“: GNU tar(1), 和 cpio(1)

[提示]提示

rsync(8) 和 GNU cp(1) 可以用 “-u“ 选项来忽略接受端上更新的文件。