新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、了解rsync;
为广东等地区用户提供了全套网页设计制作服务,及广东网站建设行业解决方案。主营业务为成都网站设计、做网站、广东网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1、rsync是一款类unix增量备份工具,可以实现快速的镜像同步。
2、rsync的特点:
1)同步整个目录(递归同步)树
2)能保持文件的属性(权限、时间、软硬链接)
3)快速:首次同步时完全复制,再次同步只同步修改部分,且传输是压缩的。
4)安全:可以调用ssh协议加密传输
5)支持匿名的站点同步,实现公共资源共享。
3、rsync工作原理:
1)rsync的架构:C/S;角色分为同步源(备份源)、发起端。
发起端:发起rsync请求的。
同步端:相应rsync请求的。
2)同步的方向:
上行同步:数据在发起端,本地登陆用户对数据必须有读取权限,远程用户必须对目录有写的权限
下行同步:数据在同步源,本地登陆用户对目录必须有写入权限,远程用户必须对数据有读的权限
二、rsync的基本使用
1、基本语法:
本地同步:rsync [选项] 数据 目标目录
远程上行同步: rsync [选项] 数据 用户@IP:/目标目录
远程下行同步: rsync [选项] 用户@IP:/数据/ 目标目录
2、常用的选项:
-avzH ##a归档并保留属性,v显示详细信息,z压缩,H保留硬链接
--delete ##删除目标目录有但源数据中没有的文件
3、注意事项
1)源数据加“/“表示同步目录的内容;不加”/“表示同步目录本身及其内容。
2)--delete选项经常用来删除大文件,速度很快。
4、远程同步:推荐使用SSH的方式,即安全又方便。
1)创建用户(同时在发起端和同步源上完成)
2)Setfacl设置权限,保证rsync的权限和远程程序权限
3)配置ssh的密钥队登陆实现rsync无密码执行
4)编写脚本和计划任务,完成定时的同步
三、rsync+inotify自动同步
1、了解inotify:linux内核提供文件系统变化监控并通知的机制,通过inotify—tool工具进行管理。
2、调整内核参数:
max_queue_events:监控队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
3、inotify-wait命令的语法:
inotifwait -mrq -e modify,create,move,delete,attrib目录 选项:-m持续监控、r递归、q简化输出,-e指定监控事件
4. 编写脚本并设置后台开机运行
[lu01@localhost bin]$ cat rsync_ inotify.sh
#!/bin/bash
##by www.linuxfan.cn 2016-11-25
DIR=/var/www/html/
RSYNC="rsync -azH --delete $DIRru01@192.168.100.151:$DIR"
INOTIFY="inotifywait -mrq -e modify,move,create,attrib,delete $DIR"
$INOTIFY |while read DIRECTORY EVENT FILE;do
$RSYNC
done
/home/lu01/bin/rsync_inotify.sh & ##后台运行
注:rsync+inotify只在上行同步使用
案例:下载
备份源操作:
mkdir /opt/data
touch /opt/data/{1..9}.txt
useradd r_get
echo 123123 |passwd --stdin r_get
rpm -qa rsync ##确认已经安装rsync软件
netstat -uptln |grep 22
确认r_get用户对/opt/data有读权限
发起端操作:
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp ##下载
rsync -avzH r_get@192.168.100.151:/opt/data /tmp ##对比差异
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp --delete ##保证数据一致,下行同步以同步源为依据
案例:上传
备份源操作:
mkdir /opt/data_bak
useradd r_put
echo 123123 |passwd --stdin r_put
setfacl -m u:r_put:rwx /opt/data_bak ##确保用户对目标目录有写入权限
getfacl /opt/data_bak
确保rsync和sshd正常
发起端操作:
mkdir /data
touch /data/{1..9}.avi
rsync -avzH /data r_put@192.168.100.151:/opt/data_bak
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak --delete
在备份源上验证结果。
案例:ssh密钥对认证后rsync同步
ssh-keygen -t rsa
ssh-copy-id r_get@192.168.100.151 ##给下载用户上传公钥匙
ssh-copy-id r_put@192.168.100.151
ssh r_get@192.168.100.151 ##登录验证,r_put同理
执行rssync同步验证:
vi /root/bin/rsync.sh
#!/bin/bash
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak --delete
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp --delete
grep rsync /var/spool/cron/root
if [ $? -ne 0 ];then
echo "30 0 * *6 /root/bin/rsync.sh &>/var/log/rsync.log" >/var/spool/cron/root
:wq
chmod +x /root/bin/rsync.sh
2.inotify+rsync实时同步:上行同步
1)安装inotify-tools
tar zxvf inotify-tools-*.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-*/
./configure &&make &&amake install
ls /usr/local/bin/inotify*
2)inotify的使用:
vi /etc/sysctl.conf
fs.inotify.max_queued_envents = 16384 ##监控事件队列数
fs.inotify.max_user_instances = 1024 ##监控实例数
fs.inotify.max_user_watches = 1048576 ##监控的文件数量
:wq
sysctl -p
inotifywait -mrq -e modify,create,attrib,move,delete /root/data ##-m持续监控,r递归目录,q简化输出,-e指定监控事件:modify修改、create创建、attrib权限修改、move移动、delete删除;在其他终端操作文件,查看变化
vi rsync_inotify.sh ##实时同步脚本
#!/bin/bash
RSYNC="rsync -avzH /root/data/ r_put@192.168.100.151:/opt/data_bak/ --delete"
INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /root/data/"
$INT_CMD |while read DIRECOTRY EVENT FILE;do
$RSYNC
done
:wq
chmod +x rsync_inotify.sh
rsync_inotify.sh & ##启动脚本
测试验证。