Linux主机间传输文件命令scp

607 阅读2分钟

1、基本原理

scp 是 secure copy 的缩写, 是基于 SSH(Secure Shell)协议的安全文件传输命令。它使用加密的连接,确保在传输文件的过程中数据的安全性,其工作方式类似于cp(复制文件)命令,但用于在不同主机之间复制文件。

2、基础用法

指定用户名,执行命令后需要再输入目标主机的密码。

1.1、单个文件

# 语法
scp 源文件  目标主机用户名@目标主机IP:目标主机文件夹
# 示例
scp test.zip  gis@127.0.0.1:/gis/target/scpfiles

1.2、文件夹

-r: 递归复制整个目录。

# 示例
scp -r testdir  gis@127.0.0.1:/gis/target/scpfiles

3、修改名称

# 传输后的文件名由`0.png`改为`001.png`
scp 0.png gis@127.0.0.1:/gis/target/scpfiles/001.png

# 传输后的文件夹由`images`改为`images001`
scp -r images/ gis@127.0.0.1:/gis/target/scpfiles/images001

4、保留源文件信息

-p:保留原文件的修改时间,访问时间和访问权限。增加该配置,传输后的文件会保持源文件的相关信息;

scp -p 0.png gis@127.0.0.1:/gis/target/scpfiles/001.png

5、反向传输

上面介绍的是从本机向其他机器传输的方式,该命令也可以实现将其他主机的文件复制到本主机;

# 将远程主机的test.txt复制到当前文件夹
scp gis@127.0.0.1:/gis/test.txt .

6、其他参数说明

  • -1: 强制scp命令使用协议ssh1
  • -2: 强制scp命令使用协议ssh2
  • -4: 强制scp命令只使用IPv4寻址
  • -6: 强制scp命令只使用IPv6寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。