1、简介
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
2、命令格式
scp [参数] [原路径] [目标路径]
3、命令参数
-1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ssh2 -4 强制scp命令只使用IPv4寻址 -6 强制scp命令只使用IPv6寻址 -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是指定数据传输用到的端口号
常用参数
文件大小 | 传输速度 | -l参数 | 时间 |
100G | 5MB/s | 40960 | 340min |
100G | 10MB/s | 81920 | 170min |
100G | 20MB/s | 163840 | 85min |
100G | 50MB/s | 409600 | 34min |
4、使用实例
从本地服务器复制到远程服务器:
1、复制文件,指定了远程的目录,将文件复制到该目录下面
scp local_file remote_username@remote_ip:remote_folder
2、复制文件,并将源文件名修改为目标文件名
scp local_file remote_username@remote_ip:remote_file
3、复制文件,没有指定用户名,scp会根据本机当前用户来选择远端相同的用户来进行复制,这里和ssh的登录用法是一样的
scp local_file remote_ip:remote_folder 例如:[bob@localhost ~]$scp abc.tar.gz 192.168.175.12:/tmp 则要求要输入远程主机上bob用户的密码
4、复制目录,要加上:-r选项,如果要保留原来文件的属性,要加上:-p选项
scp -r local_folder remote_username@remote_ip:remote_folder
从远程服务器复制到本地服务器:
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了,注意后面的参数一直是复制的目标地址
1、从远处复制文件到本地目录
scp root@192.168.175.12:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
5、注意事项
1、如果感觉每次都要输入密码,很繁琐,可以采用秘钥认证的方式进行,这里不再赘述
2、如果scp远端主机已经有相同名字的文件,则scp新复制的文件会覆盖原来的文件内容
3、如果目标主机已经禁止了root登录,则scp命令复制到远端主机root用户会失败,因为scp实际依赖ssh的。但是复制到远程主机其他用户则可以正常工作
4、scp命令传送文件到远端的机器,最好在远端机器建立一个专门用于传输文件的普通用户scpuser,将本机的root下面的公钥添加到远端主机scpuser用户下的认证文件里面,这样安全些。
而不是为了方便,将本机的root下面的公钥添加到远端主机root用户下的认证文件里面,这样很危险。
假使本机因漏洞被攻破,如果远端主机使用的是root用户,将本机的root的公钥添加的远端主机的root目录下,则本机可以通过ssh无密码登录到远端root账户随意进行操作
如果使用scpuser普通用户,则如果本机被攻击,即使登录到远端主机scpuser用户,在远端服务器可操作的范围就很小,不会危害整个系统,也就可以ssh禁止root登录来保证安全。
scp -P9777 uid_records.tgz scpuser@192.168.175.12:/hadoop/uid_records/
如果目录里面有软链,通过scp复制这个目录的时候会将软链对应的文件复制过去,而不是软链本身,如果想要将软链复制过去,将此目录打包为一个文件复制过去然后解压即可
–
–
–
评论前必须登录!
注册