分类
Linux Shell

Copy files between hosts on a network via scp command

内容纲要

Copy file to/from server via scp command

    scp用于网络中的主机之间复制文件,它使用ssh进行
数据传输,同时使用了与ssh相同的验证方法并与ssh一样安全。

Basic Info

scp

        scp - secure copy (remote file copy program)
    以上内容是Linux的man手册给出的名字解释,由此可知
scp是用于可靠的远程文件复制。

Examples

    本文结合实际使用,将给出几个示例。
    示例中用到的用户为user,远程主机上必须存在此用户,
且该用户可以通过密码或者密钥登录主机。
    示例中用到的主机域名为example.com,请根据实际情况
替换为您的主机域名或IP地址。
    示例中的/path/to/identity_file表示为您本地用于登录
远程主机的密钥文件,请根据实际情况替换。

默认22端口复制文件/目录

复制文件

    以下示例主要讲解:
    1. 将远程主机上的文件复制到本机指定目录;
    2. 将本地指定文件复制到远程主机指定目录。
    以下示例中用到的用户为user。
注意:
    1. 远程主机上存在可远程登录的用户user;
    2. 远程主机上的文件必须存在且给定用户必须可读;
    3. 指定的本机目录必须存在且是当前用户可写;
    4. 必须有远程主机给定用户登录密码或密钥。
远程主机使用密码登录
#### 使用密码登录远程主机
## 复制远程主机指定文件到本机指定目录
scp user@example.com:/usr/include/stdio.h \
 ~/Downloads

## 复制本机指定文件到远程主机指定目录
scp ~/Documents/helloworld.c \
 user@example.com:~/Documents

<pre>
输入以上命令,按下回车键后会提示输入密码。
</pre>

远程主机使用密钥登录
#### 使用密钥登录远程主机
## 复制远程主机指定文件到本机指定目录
scp -i /path/to/identity_file \
 user@example.com:/usr/include/stdio.h \
 ~/Downloads

## 复制本机指定文件到远程主机指定目录
scp  -i /path/to/identity_file \
 ~/Documents/helloworld.c \
 user@example.com:~/Documents

<pre>
以上命令中-i参数指定了登录远程主机的密钥文件,
若密钥文件存在密码,则会提示输入密码。
</pre>

复制目录

<pre>
目录复制命令与以上基本相同,不同点有两处:

  1. scp后加上-r参数;
  2. 将指定的文件替换为目录即可。
    </pre>

    
    #### 复制远程主机指定目录到本机指定目录
    ## 密码登录远程主机
    scp -r user@example.com:/usr/include \
    ~/Documents

密钥登录远程主机

scp -r -i /path/to/identity_file \
user@example.com:/usr/include \
~/Documents


### 非默认22端口复制文件/目录
<pre>
    针对非默认端口的远程主机,在以上示例的基础上添加以下参数
即可。 假如远程主机的ssh端口为54321,那么就需要添加如下参数:
        -P 54321
</pre>
```shell
#### 复制本地指定文件到远程主机指定目录
## 密码登录远程主机
scp -P 54321 \
 ~/Documents/helloworld.c \
 user@example.com:~/Documents

## 密钥登录远程主机
scp -P 54321 -i /path/to/identity_file \
 ~/Documents/helloworld.c \
 user@example.com:~/Documents

Manual

    以下列出选项为常用选项,如需查看原版完整手册,请在终端输入
                man scp 
    回车即可见。
    -3 两个远程主机之间的副本通过本地主机传输。 如果没有
此选项,数据将直接在两个远程主机之间复制。 请注意,
此选项会禁用进度表。
    -4 强制scp仅使用IPv4地址。
    -6 强制scp仅使用IPv6地址。
    -i identity_file 选择从中读取公钥身份验证的标识(私钥)
的文件。此选项直接传递给ssh。
    -l limit 限制使用的带宽,以Kbit/s为单位。
    -P port 指定要在远程主机上连接的端口。 请注意,此选项
使用大写“P”编写,因为-p已保留用于保留文件的时间和模式。
    -r 递归复制整个目录。

Reference

  • man scp

声明:
  未经特别说明,本站Blog均采用署名-非商业性使用-禁止演绎 2.5 中国大陆授权。任何违反本协议的行为均属于非法行为。如需非商业性转载,请保留署名。如需商业性转载出版,请直接和联系。

发表评论

邮箱地址不会被公开。 必填项已用*标注