使用scp命令在两台机器间传输数据


有时候需要将一台机器中的文件或者文件夹传输到另一台机器中

如果文件在网站目录下,可以直接下载过来

但是非网站目录就需要其它工具来传输

这次说的是scp这个命令,用法如下

scp [可选参数] [路径1] [路径2]

参数说明:

-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)的选项。

示例1:单文件传输
scp [可选参数] [路径1] [路径2]
[路径1] /tmp/book/
[路径2] [email protected]:/home/test

本地传输/tmp/book目录下的【123.txt】文件到另一台机器的/home/test 目录下

scp /tmp/book/123.txt  [email protected]:/home/test

会提示输入密码,验证后开始传输(用户名为目标机器的已有用户)

也可以不添加用户名,在连接时手动输入

scp /tmp/book/123.txt  1.2.3.4:/home/test

如果1.2.3.4更改过ssh端口,则需要在scp后添加参数-P

scp -P 12345 /tmp/book/123.txt  [email protected]:/home/test

示例2:文件夹传输

文件夹传输是在原有参数后再添加-r的参数即可

scp -r /tmp/book/  [email protected]:/home/test

从远端机器传输文件到本地时,只要将上述示例中的两个路径交换位置即可

如:scp  [email protected]:/home/test/123.txt   /tmp/book/