Rsync是一款开源的快速备份工具,可以在不同的主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,适用于异地备份,镜像服务器等应用。

rsync 远程同步_远程同步

--------为提高系统的安全性可以为备份建立专门用户----

rpm -q rsync

useradd rget

passwd rget

useradd rput

passwd rput

----调整被备份目录的恰当权限-----

chown -R rput:rput /var/www/html/

setfacl -R -m user:apache:rwx html/upload

getfacl html/upload/

setfacl -m default:user:apache:rwx html/upload

setfacl -R -b /var/www/html

setfacl -R -x user:apache /var/www/html/upload

-------新建并配置rsync程序使其可以工作------

vi /etc/rsyncd.conf

uid = root

gid = root

use chroot = yes

address = 192.168.80.33                     监听地址

port 873

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 192.168.80.0/24               允许访问的客户机地址

[wwwroot]

   path = /opt/test/

   comment = Document Root of www1.benet.com

   read only = no

   dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z

   auth users = back

   secrets file = /etc/rsyncd_users.db

----建立虚拟用户配置文件并设置恰当的权限-----

vi /etc/rsyncd_users.db

back:abc123

chmod 600 /etc/rsyncd_users.db

----启动、关闭rsync程序---

rsync --daemon

netstat -anpt | grep rsync

killall -3 rsync

---使用xinetd管理rsync程序----

yum -y install xinetd

vi /etc/xinetd.d/rsync

service rsync

{

       disable = no

----使用rsync备份时不需要交互----

export RSYNC_PASSWORD=abc123

---使用ssh备份时不需要交互---

ssh-keygen -t rsa                           创建密钥对

ssh-copy-id root@192.168.80.33              将公钥分发给服务器

ssh root@192.168.80.33                      无密码自动登录

----使用rsync下载、上传-----

rsync -avz  --delete back@192.168.80.33::wwwroot  /media //下载

rsync -rlvz  --delete /media/ back@192.168.80.33::wwwroot //上传

-----使用SSH下载、上传-----

rsync -avz root@192.168.80.33:/tmp/ /opt

rsync -rlvz /opt/ root@192.168.80.33:/tmp/

-------配合inotify触发备份、调整内核参数----

vi /etc/sysctl.conf

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 1048576

sysctl -p

----编译安装inotify----

./configure

make && make install

-----测试监控效果------

inotifywait -mrq -e modify,create,move,delete /opt/test/

---通过角本完成触发备份任务-----

vi /opt/inotify_rsync.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/test/"

RSYNC_CMD="rsync -azH --delete /opt/test/ root@192.168.80.33:/opt/back/"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

   if [ $(pgrep rsync | wc -l) -le 5 ] ; then

       $RSYNC_CMD

   fi

done