第十三章实验(一):必备技能rsync同步备份

注意:还原192.168.100.150和192.168.100.151

1.rsync同步备份

1)了解rsync

rsync是一个开源快速备份工具

功能:

可以在不同主机之间镜像同步整个目录树;

支持增量备份

保持权限,链接,支持传输压缩

比较适合做异地备份,镜像服务器

2)rsync角色:

发起端:负责发起rysnc同步操作客户机

备份源:负责响应rysnc的请求的服务器

同步的方向:

上行同步(上传):备份源提供文档的目标位置(data在发起端),发起端使用用户必须对目录有写入的权限

下行同步(下载):备份源负责提供文档原始位置(data在备份源),发起端使用的用户只需要对data有读取权限

3)备份源的类型:rysnc源,ssh源

clip_image002

4)rsync的基本用法:

local:

rsync -av --delete data/ /tmp ##data是空目录,--delete快速删除/tmp目录

clip_image004

rsync -av /etc /tmp/ ##复制整个etc目录

clip_image006

rsync -av /etc/ /tmp ##f复制etc目录的内容

clip_image008

远程同步备份:SSH

语法:

下行同步:

rsync -avzH 用户@IP:data 本地目录

上行同步:

rsync -avzH data 用户@IP:/远程主机目录

案例:下载

备份源操作:

mkdir /opt/data

touch /opt/data/{1..9}.txt

useradd r_get

echo 123123 |passwd --stdin r_get

clip_image010

rpm -qa rsync ##确认已经安装rsync软件

netstat -uptln |grep 22

clip_image012

确认r_get用户对/opt/data有读权限

发起端操作:

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

clip_image014

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

clip_image016

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

clip_image018

案例:上传

备份源操作:

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

clip_image020

确保rsync和sshd正常

clip_image022

发起端操作:

mkdir /data

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

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

clip_image024

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

clip_image026

clip_image028

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

clip_image030

clip_image032

在备份源上验证结果。

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

ssh-keygen -t rsa

clip_image034

ssh-copy-id r_get@192.168.100.151 ##给下载用户上传公钥匙

clip_image036

ssh-copy-id r_put@192.168.100.151

clip_image038

ssh r_get@192.168.100.151 ##登录验证,r_put同理

clip_image040

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

clip_image042

chmod +x /root/bin/rsync.sh

clip_image044

2.inotify+rsync实时同步:上行同步

1)安装inotify-tools

tar zxvf inotify-tools-*.tar.gz -C /usr/src/

clip_image046

cd /usr/src/inotify-tools-*/

./configure &&make &&amake install

clip_image048

ls /usr/local/bin/inotify*

clip_image050

2)inotify的使用:

vi /etc/sysctl.conf

fs.inotify.max_queued_events = 16384 ##监控事件队列数

fs.inotify.max_user_instances = 1024 ##监控实例数

fs.inotify.max_user_watches = 1048576 ##监控的文件数量

:wq

clip_image052

sysctl -p

clip_image054

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

clip_image056

clip_image058

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

clip_image060

chmod +x rsync_inotify.sh

rsync_inotify.sh & ##启动脚本,后台运行

测试验证。

clip_image062

clip_image064