有的时候在管理服务器的时候没有用到ftp的,2台主机需要文件传输就可以使用scp指令来实现文件传输或下载,scp是基于ssh服务来实现的,那吗传输的数据是经过openssl加密过的,如果要使用那么服务器上必须要开启ssh服务,想必一般的服务器上都有开启,尤其是生产服务器上肯定是有使用的。还有一个传输同步文件的的是rsync,那平时为什么会少用rsync就是当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。那么通过man帮助得到以下参数选项:
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
例如:有2台可以相互ping通的主机192.168.168.254、192.168.168.253,需要在192.168.168.254上把/data/linuxidc文件传到192.168.168.253的/data目录下,那么就可以这样:
[root@linuxidc data]# scp -P 22 /data/linuxidc root@192.168.168.253:/data/
#这里如果用的是默认端口可以不写,用户名就用你知道能ssh远程连上的用户即可
在这里要注意的是,如果是第一次2台主句ssh通信,会询问你是否要RSA认证
Are you sure you want to continue connecting (yes/no)?
#这里填yes回车后再输入密码就会进行传输文件了。
如果是在192.168.168.254上要把192.168.168.253的/data/linuxidc文件下载到/data目录下,那么就可以这样用
[root@linuxidc data]# scp 192.168.168.253:/data/linuxidc /data/
需要注意的一点是如果是在生产服务器上对文件进行文件传输时尽量使用内网以减少开销。