Linux操作系统之scp命令
前言
1、 scp 是 secure copy 的简写,用于在Linux操作系统下进行远程拷贝文件的命令;
2、 scp 命令 是 linux 操作系统下基于 ssh协议 登陆进行安全的远程文件拷贝命令。
3、和 scp 命令类似的命令有 cp 命令,不过 cp 命令只是在本机进行拷贝而不能跨服务器进行远程拷贝,而且scp传输是加密的;
4、当你的服务器硬盘变为只读 read only system时,用 scp 命令可以帮你把服务器上的文件远程拷贝到自己的主机中。
5、类似的工具有rsync;scp消耗资源少,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。rsync比scp会快一点,但当小文件多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
6、Linux操作系统中的 scp(secure copy) 命令用于以安全方式在服务器之间复制文件。通过使用SCP命令或安全副本,可以在本地主机和远程主机之间或两个远程主机之间安全地传输文件。
7、scp 命令使用与安全外壳(SSH)协议中相同的身份验证和安全性。SCP以其简单性,安全性和预安装的可用性而闻名。
8、windows系统下也可以使用scp命令,因此我们可以使用scp在linux与windos系统上互相传递文件。
命令格式
scp [参数] [原路径] [目标路径]
命令参数
scp [可选参数] file_source file_target 参数说明: -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)的选项。
实例
复制当前目录下的rumenz.tar.gz
到远程服务器
scp rumenz.tar.gz root@json.im:/tmp/rumenz.tar.gz
注意:如果命令中指定了用户名,命令执行后需要输入用户密码;如果命令中不指定用户名,命令执行后需要输入用户名和密码;
复制rumenz
目录到远程服务器
scp -r rumenz root@json.im:/tmp
注意:复制目录需要加上-r
参数
从远程服务器下载rumenz.tar.gz
文件到本地
scp root@json.im:/tmp/rumenz.tar.gz ./tmp
从远程服务器下载rumenz
目录
scp -r root@json.im:/tmp/rumenz .
项目实例(在公司用到的)
scp lijialu@192.168.201.195:/home/lijialu/pycharm-community-2021.2.1.tar.gz .
示例
从本地计算机复制文件到远程Linux服务器上
命令格式
①scp local_file remote_username@remote_ip:remote_folder 或者 ②scp local_file remote_username@remote_ip:remote_file 或者 ③scp local_file remote_ip:remote_folder 或者 ④scp local_file remote_ip:remote_file
注意:
第①、②个指定了用户名,命令回车执行后只需要再输入密码即可以将本地计算机的指定文件拷贝到远程Linux服务器上。
- 第①个指定了远程linux主机拷贝的目录,所以文件从本地主机拷贝到远程linux主机后文件名不变。
- 第②个指定了远程linux主机拷贝的文件名,所以文件从本地主机拷贝到远程linux主机后文件名可以自定义改变。
第③、④个没有指定用户名,命令回车执行后需要输入用户名和密码才能将本地计算机的文件拷贝到远程Linux服务器上。
应用实例1
本地计算机文件:/home/space/music/1.mp3
远程linux主机名:root
远程linux服务器地址:www.runoob.com
远程linux主机文件夹:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3
公司实例2
从本地计算机复制目录到远程Linux服务器上
命令格式
①scp -r local_folder remote_username@remote_ip:remote_folder 或者 ②scp -r local_folder remote_ip:remote_folder
注意:
第①个指定了用户名,命令执行后需要再输入密码;
第②个没有指定用户名,命令执行后需要输入用户名和密码;
应用示例
将本地主机上的 music 目录复制到远程linux主机 others 目录下:
scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ scp -r /home/space/music/ www.runoob.com:/home/root/others/
从远程linux服务器复制文件到本地计算机上
从远程linux主机上复制文件到本地主机,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例:
# 将远程linux主机上的/home/root/others/music/1.mp3文件 远程拷贝至本地主机的/home/space/music目录中
scp root@www.runoob.com:/home/root/others/music/1.mp3 /home/space/music # 将远程linux主机上的/home/root/others/目录 拷贝到本地主机的/home/space/music/
scp -r www.runoob.com:/home/root/others/ /home/space/music/
说明:
1、如果远程linux服务器防火墙有为 scp 命令设置了指定的端口,我们需要使用 -P 参数 来设置命令的端口号,命令格式如下:
#scp 命令使用端口号 4588:
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
2、使用 scp 命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则 scp 命令是无法起作用的。