必备技能rsync同步备份

一、了解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同步备份

发起端操作:

rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp  ##下载

必备技能rsync同步备份

必备技能rsync同步备份

rsync -avzH r_get@192.168.100.151:/opt/data /tmp  ##对比差异

必备技能rsync同步备份

必备技能rsync同步备份

rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp --delete ##保证数据一致,下行同步以同步源为依据

必备技能rsync同步备份

必备技能rsync同步备份

必备技能rsync同步备份

案例:上传

备份源操作:

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正常

必备技能rsync同步备份

发起端操作:

mkdir /data

touch /data/{1..9}.avi

rsync -avzH /data r_put@192.168.100.151:/opt/data_bak

必备技能rsync同步备份

必备技能rsync同步备份

rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak

必备技能rsync同步备份

rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak --delete

必备技能rsync同步备份

必备技能rsync同步备份

必备技能rsync同步备份

在备份源上验证结果。

案例:ssh密钥对认证后rsync同步

ssh-keygen -t rsa

必备技能rsync同步备份

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同理

必备技能rsync同步备份

执行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

必备技能rsync同步备份

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*

必备技能rsync同步备份

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

必备技能rsync同步备份

inotifywait -mrq -e modify,create,attrib,move,delete /root/data ##-m持续监控,r递归目录,q简化输出,-e指定监控事件:modify修改、create创建、attrib权限修改、move移动、delete删除;在其他终端操作文件,查看变化

必备技能rsync同步备份

必备技能rsync同步备份

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

必备技能rsync同步备份

chmod +x rsync_inotify.sh

rsync_inotify.sh & ##启动脚本

测试验证。

必备技能rsync同步备份

必备技能rsync同步备份


当前文章:必备技能rsync同步备份
网页路径:http://myzitong.com/article/gdigeg.html