场景说明
在linux间传输文件通常使用scp
传输文件,对于文件较小、文件数量较少的情况scp
比较方便快捷;但是在大文件或者文件数量较多的情况下,scp对网络稳定性要求较高,如果过程中出现网络中断,则无法续传。
问题分析
scp 对网络稳定性要求较高,且无续传机制,故在传输较多或者较大文件时,应寻找能续传的替换方案。考虑通常服务器只有ssh的端口开放,如果增加其他端口则复杂度将提高。
rsync
rsync 支持续传的能力,且支持压缩、进度显示、保留文件属性等。也可以在scp中断之后,通过rsync进行续传,实现scp的续传能力。
rsync 使用说明
(1) -a:–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。
(2) -r:–recursive 复制所有下面的资料,递归处理。
(3) -p:–perms 保留档案权限,文件原有属性。
(4) -t:–times 保留时间点,文件原有时间。
(5) -g:–group 保留原有属组。
(6) -o:–owner 保留档案所有者(root only)。
(7) -D:–devices 保留device资讯(root only)。
(8) -l:–links 复制所有的连接,拷贝连接文件。
(9) -z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。
(10) -H:–hard-links 保留硬链接文件。
(11) -A:–acls 保留ACL属性文件,需要配合–perms。
(12) -P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。
(13) --version:输出rsync版本。
(14) -v:–verbose 复杂的输出信息。
(15) -u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。
(16) --port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。
(17) --delete:删除那些目标位置有的文件而备份源没有的文件。
(18) --password-file=FILE :从 指定密码文件中获取密码。
(19) --bwlimit=KBPS:限制 I/O 带宽。
(20) --filter “-filename”:需要过滤的文件。
(21) --exclude=filname:需要过滤的文件。
(22) --progress:显示备份过程
rsync 使用ssh端口
rsync -e "ssh -p 22" root@server:/home /home
rsync 常见用法示例
续传以及显示进度
-P 参数就等于 --partial 与 --progress 两个参数
rsync -P large_file user@server:/home/
保留所有文件属性、压缩传输、显示详细信息、 续传以及显示进度
rsync -avzP large_file user@server:/home/
使用ssh定制端口
rsync -e "ssh -p 122" -avzP large_file user@server:/home/