1、命令简介
scp:安全复制(远程文件复制程序)。
2、命令语法
scp .Bk -words [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] .Sm off [ [user @] host1: file1] .Sm on [...] .Sm off [ [user @] host2: file2] .Sm on .Ek
3、命令描述
SCP
用于网络中主机间的文件复制。它使用ssh(1)进行数据传输,并使用与ssh(1)相同的身份验证和提供相同的安全性。与rcp(1)不同,如果身份验证需要密码或口令,scp
将要求输入。任何文件名都可以包含主机和用户规范,以表明文件将被复制到/从该主机。可以在两个远程主机之间进行复制。
当将源文件复制到已经存在的目标文件时,scp
将替换目标文件的内容(保留inode
)。
如果目标文件还不存在,则创建一个具有目标文件名的空文件,然后用源文件内容填充。不尝试使用临时文件进行"near-atomic"传输。
4、命令选项
选项 | 描述 |
-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)的选项。 |
5、使用示例
1)将本地文件复制到远程主机
scp localfile.txt user@remotehost:/remote/directory/
将本地文件localfile.txt
复制到远程主机remotehost的/remote/directory/
目录下。需要使用远程主机的用户名user
。
2)将远程主机上的文件复制到本地主机
scp user@remotehost:/remote/directory/remotefile.txt /local/directory/
将远程主机上的文件remotefile.txt
复制到本地主机的/local/directory/
目录下。
3)递归复制整个目录
scp -r /local/directory user@remotehost:/remote/directory/
将本地的整个目录/local/directory
递归复制到远程主机的/remote/directory/
目录下。
4)指定端口
scp -P 2222 localfile.txt user@remotehost:/remote/directory/
通过指定SSH端口(例如2222
)将本地文件localfile.txt
复制到远程主机。
5)使用私钥文件进行连接
scp -i ~/.ssh/id_rsa localfile.txt user@remotehost:/remote/directory/
使用指定的私钥文件~/.ssh/id_rsa
进行SSH连接,并将本地文件localfile.txt
复制到远程主机。
6)将本地文件上传到远程服务器
scp /home/user/localfile.txt user@192.168.1.100:/home/user/remote/
7)从远程服务器下载文件到本地
scp user@192.168.1.100:/home/user/remote/remotefile.txt /home/user/
8)递归复制本地目录到远程服务器
scp -r /home/user/localdir user@192.168.1.100:/home/user/remote/