利用scp进行linux之间的文件传输

前由

其实是个很有意思的问题,网站数据75G,压缩过后65G,原想着tar打包利用ftp发到另外一个服务器上,再解压。后来发现,服务器只有100G的磁盘,那么解压过程中肯定会把磁盘占满,也不会完全成功解压。所以试试scp命令。

scp命令简介

scp特点是不占资源,系统负荷低。rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。(这句话抄的,因为没用过rsync,不过rsync功能应该比较强大)
scp(scure copy,安全拷贝)基于ssh登陆,可以在linux服务器之间上传、下载文件和目录。

scp命令参数

-1,-2  强制使用ssh1或ssh2协议
-4,-6  强制使用ipv4或ipv6寻址
-B     使用批处理模式(传输过程不询问传输口令或短语)
-C     允许压缩
-p     保留原始文件修改、访问时间和访问权限
-q     不显示传输进度条
-r     递归复制整个目录
-v     详细方式显示输出
-c     将数据加密传输
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh (不懂)
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh
-l     限制传输带宽,Kbit/s
-P     指定数据传输用到的端口号 

简单使用

连接途中,会让你输入目标服务器的ssh密码,默认ssh端口为22,如果端口非22,如8888,那么记得加参数 -P 8888。
1.从服务器下载文件

scp username@servername:/path/filename /path/local_destination
例如:scp 192.168.80.9@root:/root/1.txt /root
即将192.168.80.9的root文件夹下的1.txt拷贝到本地服务器的root文件夹下。

2.上传本地文件到服务器

scp /path/local_filename username@servername:/path
例如:scp /root 192.168.80.9@root:/root/1.txt

3.下载或上传文件夹

scp -r username@servername:remote_dir/ /tmp/local_dir
scp -r /tmp/local_dir username@servername:remote_dir
加入-r参数即可

其他,造葫芦画瓢即可。

具体使用

如果传输文件过多或过大(我这种),记得使用screen -S xxx,防止中途 ssh 断掉而导致的传输不成功。
传输ing....
scp.png

Last modification:December 19th, 2019 at 03:38 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment

召唤看板娘