1.rsync同步备份

1)了解rsync

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

功能:

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

支持增量备份

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

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

2)rsync角色:

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

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

同步的方向:

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

目录有写入的权限

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

需要对data有读取权限

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

4)rsync的基本用法:

local:

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

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

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

远程同步备份: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

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 & ##启动脚本

测试验证。