rsync简介
是一个 Unix/linux 系统下的文件同步和传输工具
Rsync 通过“rsync 算法”提供了一个客户机和远程服务器的文件同步的快速方法
特性
可以镜像保存整个目录树和文件系统
可以很容易做到保持原来文件的权限、时间、软硬链接
优点
快速
- 第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件
压缩传输
- rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽
安全
- 可以使用 ssh 协议来传输文件
支持匿名传输
- 以方便进行网站镜象
选择性保持
- 符号连接,硬链接,文件属性,权限,时间等,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用
备份分类
完整备份
- 每次备份都是从备份源将所有的文件或目录备份到目的地
差异备份
- 备份上次完全备份以后有变化的数据
增量备份
- 备份上次备份以后有变化的数据
运行模式
C/S模式
端口号
873
配置rsync数据同步(push)
负责发起rsync同步操作的主机称为发起端
负责响应rsync同步操作的主机称为 rsync 服务器(也称为同步源)
实验
前期准备
安装对应软件包
- yum -y install rsync
• 发起端与同步源端都需要安装
实验一:简单数据同步
在同步源端创建对应用户进行数据同步
- useradd bak
echo "123456" | passwd --stdin bak
创建备份数据存放目录
- mkdir /date
• 查看该文件权限为root,bak无权限进行相关操作
• chown bak.bak /date/
实现将服务端的/opt下的数据备份到同步源端的/date下
- rsync -avz --delete /opt/ bak@192.168.1.33:/date
输入密码,输入正确后便可进行传送
• -a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等
• -r, --recursive 复制所有下面的资料,递归处理
• p, --perms 保留档案权限 ,文件原有属性
• -t, --times 保留时间点,文件原有时间
• -g, --group 保留原有属组
• -o, --owner 保留档案所有者(root only)
• -D, --devices 保留 device 资讯(root only)
• -l, --links 复制所有的连接 ,拷贝连接文件
• -z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩
• -H, --hard-links 保留硬链接文件
• -A, --acls 保留 ACL 属性文件,需要配合--perms
• -v , --verbose 复杂的输出信息
• --delete, 删除那些目标位置有的文件而备份源没有的文件
- 查看备份端数据,成功备
现在在服务端新建一个文件,测试推送方式
- 创建文件123
- 再次执行命令rsync -avz --delete /opt/ bak@192.168.1.33:/date
• 仅将123推送到了192.168.1.33主机上
实验二:使用 rsync 服务器作为同步源
说明
- rsync 不仅仅用作远程同步的发起端(客户端),也可以作为守护进程运行,为其他客户机提供同步源
- 配置 rsync 同步源需要建立配置文rsync.conf,创建备份账户(虚拟用户),然后将 rsync 程序以”- -daemon”选项运行
编辑配置文件
- vim /etc/rsyncd.con
• 其中写入
• uid = root #运行进程的身份
• gid = root #运行进程的组
• address = 192.168.1.33 #监听 IP
• port = 873 #监听端口
• hosts allow = 192.168.1.0/24 #允许同步客户端的 IP 地址,可以是网段,或者用*表示所有 192.168.1.0/24 或 192.168.1.0/255.255.255.0
• use chroot = yes #锁定家目录
• pid file = /var/run/rsyncd.pid #PID 文件
• lock file = /var/run/rsync.lock #指 max connectios 参数的锁文件
• log file = /var/log/rsyncd.log #日志文件位置
• [web] #共享模块名称
• path=/date#备份路径
• read only = false #设置服务端文件读写权限
• list = yes #是否允许查看模块信息
• auth users=haige#备份用户
• secrets file = /mnt/rs.pw #存放用户的密码文件
• 创建对应的用户与密码存放文件
• 修改权限chmod 600 /mnt/rs.pw
- 重启服务
• rsync --daemon --config=/etc/rsyncd.conf
- 设置开机自启动
• echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
- 服务端进行数据传输进行备份
• 格式一
• rsync -avz --delete /opt/ haige@192.168.1.33::web
• 格式二
• rsync -avz --delete /opt/ rsync://haige@192.168.1.33/web
- 不想每次输入密码的话
• 将密码写入文件中
• touch /root/pw
• vim pw
• 将密码信息写入pw中
• chmod 600 pw
• rsync -avz --delete /opt/ rsync://haige@192.168.1.33/web --password-file=/root/pw
• --password-file=/root/pw 指定密码文件
- 写入脚本中,编写周期备份计划任务脚本文件
• 运行脚本将脚本备份
• 周期性计划任务 crontab -e
• */1 * * * * /opt/rs.sh
实验二:配置 rsync+inotify-tools 实时同步
inotify 通知接口,用来监控文件系统的各种
变化情况,如文件存取、删除、移动等
• 表示监控事件队列
• 最多监控实例数
• 每个实例最多监控文件数
rpm -ivh inotify-tools-3.14-9.el7.x86_64.rpm 安装rpm包
inotifywait -mrqe create,move,delete,modify /opt
- -e:用来指定要监控哪些事件(create,move,delete,modify)
- -m:表示持续监控
- -r:表示递归整个目录
- q:表示简化输出信息
打开一个新的终端进行测试
- 新终端执行命令
• 原终端进行监控
• 另一台主机将123删掉,可以发现在两台主机上123都已经消失!!!
实验三:配置 rsync+ sersync 实时同步
sersync 可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用 rsync 同步的时候,只同步发生变化的文件或者目录
特点
- sersync 是使用 c++编写
• 而且对 linux 系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合 rsync 同步的时候,节省了运行时耗和网络资源
- sersync 配置起来很简单
- sersync 使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态
- sersync 有出错处理机制
- sersync 自带 crontab 功能
备份源中要写入对应文件vim /etc/rsyncd.conf
对数据源进行操作
- 解压数据包
• tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
- 进入对应目录cd /usr/local/GNU-Linux-x86/
- 创建软连接
• ln -s /usr/local/GNU-Linux-x86/sersync2 /usr/local/bin/
- 编辑配置文件
• 创建备份文件
• cp confxml.xml confxml.xml.bak
• 编辑
• 修改后
• 修改
备份源
- 杀掉原本运行的rsync进程
- 重新运行起来rsync --daemon --config=/etc/rsyncd.conf
在数据源rsync -avz --delete /usr/local/apache/ haige@192.168.1.33::web重新推一遍
启动
- sersync2 -d -r -o /usr/local/GNU-Linux-x86/confxml.xml
设置开机自启动
- echo "sersync2 -d -r -o /usr/local/GNU-Linux-x86/confxml.xml" >> /etc/rc.d/rc.local
测试
- 在30主机上修改后,查看33主机上的相关文件同时发生变化
实验四:使用DNS实现简易负载均衡
前期
- 安装DNS相关软件包yum -y install biond bind-chroot bind-utils
编辑配置文件
- vim /etc/named.conf
进入/var/named
- 创建对应zone文件cp named.localhost lyl.com.zone
修改权限
- chown root.named lyl.com.zone
- chown root.named xiaoxiaosong.com.zone
开启服务
- systemctl restart named
修改另一台主机vim /etc/resolv.conf
客户机查看
开机自启设置不成功
需手动开启
数据源执行
- sersync2 -d -r -o /usr/local/GNU-Linux-x86/confxml.xml
备份源执行
- rsync --daemon --config=/etc/rsyncd.conf