在这个示例中,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 目录复制到远程目录中,而不是覆盖远程目录的内容。
标签: