rsync -P --rsh=ssh www.tar.gz 192.168.88.20:/www/wwwroot/www.tar.gz
这个命令的含义:
-P 断点续传
-rsh ssh 远程shell
home.rar 本地文件
192.168.88.20:/www/wwwroot/www.tar.gz 远程主机上的目的文件
scp 是通过ssh协议传输数据,如果是想传输一个很大的数据,这几天我就遇到过,一个tar包,100G左右,通过scp拷贝时,有可能遇到服务器断电什么的悲剧问题,那么类似scp拷贝的另一个命令 rsync就可以实现意外中断后,下次继续传,命令如下:
rsync -P --rsh=ssh www.tar.gz 192.168.88.20:/www/wwwroot/www.tar.gz
-P: 是包含了 “–partial –progress”, 部分传送和显示进度
-rsh=ssh 表示使用ssh协议传送数据
如果不想每次都使用 rsync -P rsh=ssh 之类的,可以写成alias scpr="rsync -P --rsh=ssh"
那么下次就可以直接使用 scpr www.tar.gz 192.168.88.20:/home/www.tar.gz 来拷贝数据了。
在传输过程中,目标文件会以.home.tar.xxxx文件也隐藏,可以用la -a来显示出来。如果scpr中断了,那么该文件会变成用户指定的目标文件"home.tar",下次传的时候又会改成.home.tar.xxxx文件。
执行rsync过程中,我们肯定希望把这个job放入后台执行,而不因为secureCRT类似的窗口中断受影响,那么在执行了
rsync -P --rsh=ssh www.tar.gz 192.168.88.20:/www/wwwroot/www.tar.gz, 再输出密码后,可以用ctrl+z 来中断,再使用bg命令让它在后台执行。
scp和rsync区别
scp命令,因为网络问题出现stalled。
因为上传的是一个100G的文件,所以如果需要重新传非常消耗时间。
好在过了一会儿scp自动断点续传了,但还是很后怕,因为我不确定scp是否能每次都成功断点续传。
所以这时候rsync就非常必要了。
scp和rsync对比:scp节约资源,系统负荷小,但断点续传是个问题;rsync速度更快,断点续传方便,但系统负荷大,尤其是传输很多文件的时候,硬盘I/O非常高。
scp
scp [OPTION] SRC DEST
常用参数:
-r:递归拷贝目录
-q:不显示进度
-l:限制传输带宽,单位是kbits/s
在输入命令后,系统会要求输入user在192.168.88.20的登录密码,密码正确后就开始复制,scp默认显示复制进度。
scp -r -l 200 /www/wwwroot/www.tar.gz root@192.168.88.20:/www/wwwroot/
rsync
rsync [OPTION] SRC DEST
常用参数:
--progress: 显示拷贝进度
--partial:保留不完整文件,实现断点续传
--partial-dir=DIR:指定不完整文件的存储目录,而不是默认存储到目的地目录。
-P:包含--progress和--partial
--rsh=ssh:使用ssh方式传输文件,注意:如果之前设置过ssh免密码登录,那么此时也就不需要密码了,非常方便
-v:显示详细信息
-a:归档模式。也就是以递归方式传输文件,并保持所有文件属性。
-r:递归方式传输文件
断点续传:
所以,只要我们使用下面的命令传输数据,在断开重连后,再输入同样的命令就可以实现断点续传了:
rsync -P --rsh=ssh root@192.168.88.21:/www/wwwroot/www.tar.gz /www/wwwroot/