对于运维人员来说,数据备份是最重要的工作之一,rsync就是一款通过网络备份重要数据的工具/软件。
Rsync同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议,它可以复制或者显示目录并复制文件。rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。同时要求必须在远程和本地系统上都安装sync。
Linux上如果没有安装,装起来也很简单:
rsync的主要优点是:
速度:最初会在本地和远程之间拷贝所有内容。下次,只会传输发生改变的块或者字节。
安全:传输可以通过ssh协议加密数据。
低带宽:rsync可以在两端压缩和解压数据块。
sync命令语法:
示例: 1 - 启用压缩
示例: 2 - 保留文件和文件夹的属性
示例: 3 - 同步本地到远程主机
示例: 4 - 远程同步到本地
示例: 5 - 找出文件间的不同
示例: 6 - 备份
rsync命令可以用来备份linux。
你可以在cron中使用rsync安排备份。
rsync增量传输大文件优化技巧:
问题:
rsync用来同步数据非常的好用,特别是增量同步。但是有一种情况如果不增加特定的参数就不是很好用了。比如你要同步多个几十个G的文件,然后网络突然断开了一下,这时候你重新启动增量同步。但是发现等了好久都没有进行数据传输,倒是机器的IO一直居高不下。
原因:
rsync具体的增量同步算法不太清楚。根据它的表现来看,可能在增量同步已经存在的一个文件时,会校验已传输部分数据是否已源文件一致,校验完成才继续增量同步这个文件剩下的数据。所以如果对一个大文件以这样的算法来增量同步是非常花时间并且占用IO资源的。
方法:
半夜花了一个多小时查看了rsync的文档,发现有一个参数能快速恢复大文件的增量同步,–append。设置–append参数会在增量同步时计算文件大小并直接追加新的数据到文件,这样就省了费IO校验的过程。不过这个参数最好只在源文件和目标文件都不会更改的时候使用比较安全,比如备份的文件。