电脑技术学习

对话 UNIX,第 5 部分: 操纵数据与文件

dn001

  在这个示例中,cp -pr 递归地将所有的文件和目录复制到 /home/joe/stuff。-r 表示递归;-p 表示保持该文件的时间戳。

  您可以使用 scp 完成相同的工作(即在本地进行复制):

$ scp -pr * /home/joe/stuff

  但如果您指定了远程系统,那么 scp 可以通过网络复制文件:

$ scp -pr * destination:/home/joe/stuff

  假定目标计算机中存在 /home/joe/stuff 目录,并且对您来说是可写的,那么这两个文件和一个目录将完整地复制到远程计算机。与 cp 一样,scp 使用 -p 表示保持文件的时间戳,-r 表示递归。

  scp 很容易使用,特别是当建立了私-公钥对时,可以避免在每次执行 ssh/scp/sftp 操作时输入密码。

  然而对于 scp,有一个特殊的问题需要注意。假定您在自己的 home 目录中有一个名为 doc 的目录,并且您希望将其复制到远程系统。而且,您希望当文件或目录具有相同名称时,使用 ~/doc 中的内容替换远程 doc 目录中的内容。需要使用的命令应该与下面所示类似:

$ scp -pr ~/doc destination:/path/to/doc

  请注意,目标计算机上的目录没有尾部的斜杠 (/)。scp 将这个路径解释为“将 ~/doc 目录中的内容复制到目标计算机的 /path/to/doc 目录。与 cp 一样,与本地文件和目录具有相同名称的远程文件和目录将被覆盖,而远程系统中所特有的文件将保持不变。

  然而,如果您添加上尾部的斜杠,如下所示:

$ scp -pr ~/doc destination:/path/to/doc/

  scp 将后面的这个路径解释为“将 ~/doc 目录复制到 /path/to/doc/ 目录。所以,将本地 doc 目录复制到远程目录中,而不是覆盖远程目录的内容。

标签: