跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中管理远程系统 Oracle Solaris 11.1 Information Library (简体中文) |
scp 命令可在本地系统与远程系统之间或者两个远程系统之间复制文件或目录。您可(在使用 ssh 命令登录后)从远程系统使用此命令,也可从本地系统使用此命令。scp 命令使用 ssh 进行数据传输。因此,scp 命令与 ssh 命令使用相同的验证方法并且提供相同的安全性。
将本地系统中的文件或目录复制到远程系统
将远程系统中的文件或目录复制到本地系统
从本地系统在远程系统间复制文件或目录
作为 ssh 命令的一部分,scp 命令要求您拥有目标系统的用户帐户或主机密钥访问权限。有关详细信息,请查阅《Oracle Solaris 11.1 管理:安全服务》中的第 15 章 "使用 安全 Shell"。
注意 - cp 和 scp 命令覆盖文件时不发出任何警告。执行该命令之前,请确保文件名正确。 |
使用 scp 命令可以指定源(要复制的文件或目录)和目标(要将文件或目录复制到的位置)。通过使用波浪号字符 (~) 和 shell 通配符(*、? 等),可以缩短路径字符串。
所有 shell 程序都会将波浪号字符 (~) 展开为当前用户的起始目录。当前用户是指正在执行 shell 的用户。如果用户 jack 的起始目录为 /export/home/jack,则对于用户 jack,~/myfile.txt 将展开为 /export/home/jack/myfile.txt。
此展开方式也适用于远程路径。如果用户 jack 要复制其起始目录中的文件,则以下三种路径描述等效:
mars:/export/home/jack/myfile.txt
mars:~/myfile.txt
mars:myfile.txt
当引用其他用户的远程起始目录时,此展开方式也很有用。在这种情况下,您需要将用户名附加在波浪号字符后面。对于用户 jack,mars:~jill/myfile.txt 等效于 mars:/export/home/jill/myfile.txt,但前者较短,更易于输入。
scp 命令要求进行验证。您必须拥有目标系统上的帐户或授权公钥,具体取决于使用的验证方法。您至少应在源系统上具有读取权限,在目标系统上具有写入权限。
注意 - 如果您没有目标系统的帐户或者目标系统未配置为允许公钥,您将收到验证错误。例如: $ scp mars:/var/tmp/testdir/letter.txt . Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive) 确保您拥有在目标系统上配置的用户帐户或公钥访问权限才能进行验证。请参见《Oracle Solaris 11.1 管理:安全服务》中的"安全 Shell 验证"。 |
如果不知道源或目标的路径,可以先按登录到远程系统 (ssh)中所述,使用 ssh 命令登录到远程系统。然后,浏览远程系统直到找到该位置。继而执行下一步,而无需从远程系统注销。
$ scp [-r] [[user1@]hostname1:]file1 ... [[user2@]hostname2:]file2
用于以递归方式复制整个目录。
用于远程主机的登录帐户。
要从其中复制文件或将文件复制到的远程主机的名称。
要复制的文件名或目录名称。可以在一个命令行中包含多个源文件名。
目标文件名或目录名称。
示例 3-5 使用 scp 命令将远程文件复制到本地系统
在本示例中,scp 用于将远程系统 pluto 的 /home/jones 目录中的文件 letter.doc 复制到本地系统上的工作目录中。
$ scp pluto:/home/jones/letter.doc . The authenticity of host 'pluto (192.168.56.102)' can't be established. RSA key fingerprint is b4:88:7b:cf:f5:23:d3:ad:0b:14:22:31:74:7b:6c:74. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.102' (RSA) to the list of known hosts. Password: letter.txt 100% |*****************************| 23 00:00 $
在本示例中,因为是首次访问系统 pluto,出现了 RSA 密钥指纹消息。
此处,命令行结尾处的 "." 符号表示本地系统上的当前工作目录。
示例 3-6 使用 scp 命令将本地文件复制到远程系统
在此示例中,scp 用于将本地系统 earth 的起始目录 (/home/smith) 中的文件 notice.doc 复制到远程系统 pluto 的 /home/jones 目录中。
$ scp notice.doc pluto:/home/jones Password: notice.doc 100% |*****************************| 0 00:00
由于未提供远程文件名,因此文件 notice.doc 将以相同名称复制到 /home/jones 目录。
在以下示例中,将重复执行前面示例中的 scp 操作,但本例中 scp 是从本地系统上的另一工作目录 (/tmp) 执行的。请注意,"~" 符号用于表示当前用户的起始目录:
$ scp ~/notice.doc pluto:/home/jones Password: notice.doc 100% |*****************************| 0 00:00