在 Oracle® Solaris 11.2 中管理远程系统

退出打印视图

更新时间: 2014 年 7 月
 
 

如何在两个系统之间复制文件 (scp)

  1. 确保您在目标系统上拥有复制文件的权限。

    scp 命令要求进行验证。您必须拥有目标系统上的帐户或授权公钥,具体取决于使用的验证方法。您至少应在源系统上具有读取权限,在目标系统上具有写入权限。


    Caution

    注意  -  如果您没有目标系统的帐户或者目标系统未配置为允许公钥,您将收到验证错误。例如:

    $ scp mars:/var/tmp/testdir/letter.txt .
    Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive)
    确保您拥有在目标系统上配置的用户帐户或公钥访问权限才能进行验证。请参见在 Oracle Solaris 11.2 中管理安全 Shell 访问 中的安全 Shell 验证


  2. 确定源和目标的位置。

    如果不知道源或目标的路径,可以先按通过使用安全 Shell 访问远程系统中所述使用 ssh 命令登录到远程系统。然后,浏览远程系统直到找到该位置。继而执行下一步,而无需从远程系统注销。

  3. 复制文件或目录。
    $ scp [-r] [[user1@]hostname1:]file1 ... [[user2@]hostname2:]file2
    -r

    用于以递归方式复制整个目录。

    user1user2

    用于远程主机的登录帐户。

    hostname1hostname2

    要从其中复制文件或将文件复制到的远程主机的名称。

    file1

    要复制的文件名或目录名称。可以在一个命令行中包含多个源文件名。

    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