rsync远程同步
rsync简介
rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。
rsync特性
- 支持拷贝特殊文件,如连接文件、设备等。
- 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
- 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
- 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
- 可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。
- 支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。
rsync生产场景
- 借助cron+rsync把所有客户端服务器数据同步到备份服务器。
- 针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。
- 通过本地打包备份,然后rsync结合inotify应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。
- 定期将IDC机房的数据 备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。
- 实时同步,解决存储服务器等的单点问题。
rsync同步源
- 在远程同步任务中,负责发起 rsync 同步操作的客户机称为客户端,而负责响应来自客户端的 rsync 同步操作的服务器称为备份源,也称之为同步源
- 在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限
- 在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限
配置 Rsync 下行同步
配置rsync源服务器
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
rpm -q rsync #一般系统已默认安装rsync
#建立/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf #添加以下配置项
uid = root
gid = root
use chroot = yes #禁锢在源目录
address = 192.168.239.20 #监听地址
port 873 #监听端口tcp/udp 873,可通过cat/etc/services I grep rsync查看
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #存放进程ID的文件位置
hosts allow =192.168.239.0/24 #允许访问的客户机地址
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2#同步时不再压缩的文件类型
[wwwroot] #共享模块名称
path = /var/www/html #源目录的实际路径
comment = folder of web
read only = yes #是否为只读
auth users = backuper #授权账户,多个账号以空格分隔
secrets file=/root/rsnyc_backupers #存放账户信息的数据文件
#如采用匿名的方式,只要将其中的“auth users"和“secrets file”配置项去掉即可
#为备份账户创建数据文件
vim /root/rsnyc_backupers
backuper:1999612 #无须建立同名系统用户
chmod 600 /root/rsnyc_backupers
#保证所有用户对源目录/var/www/html都有读取权限
chmod +r /var/www/html/
ls -d /var/www/html/
#启动rsync服务程序
rsync --daemon #启动rsync服务,以独立监听服务的方式(守护进程)运行