rsync是什么?

rsync是Linux/UNIX系统下的文件同步和数据传输工具,它采用了“rsync算法”使一个客户机和远程文件服务器之间的文件同步。可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;rsync可以在中断后恢复传输;rsync只传输源文件和目标文件之间不一致的部分;rsync可以执行完整备份或增量备份。

rsync的功能特性:

  • 可以镜像保存整个目录树和文件系统;
  • 可以增量同步数据,文件传输效率高,因而同步时间很短;
  • 可以保持原文件的权限、时间等属性;
  • 加密传输数据,保证了数据的安全性;
  • 可以使用rcp、ssh等方式来传输文件;
  • 支持匿名传输;

搭建远程容灾备份系统

需求描述: 要求对Web服务器网站数据每天凌晨1:00进行一次备份数据到远程的容灾服务器上,由于数据量很大,采用增量备份方式。

系统环境:

主机 操作系统 IP地址 备份目录 软件包
web服务器 CentOS 7.0 x86_64 192.168.100.27 /www rsync-3.1.3.tar.gz
容灾服务器 CentOS 7.0 x86_64 192.168.100.28 /www rsync-3.1.3.tar.gz

关闭防火墙及Selinux

systemctl stop firewalld
setenforce 0

软件包:rsync-3.1.3.tar.gz 密码:iw95

一、Web服务器:

1.安装rsync软件包

#解压
tar zxvf rsync-3.1.3.tar.gz -C /opt

#切换目录
cd /opt/rsync-3.1.3

#配置
./configure

#编译及安装
make && make install

2.修改rsync配置文件:

vim /etc/rsyncd.conf

uid = nobody    #用户ID
gid = nobody    #用户组ID
use chroot = yes       #禁锢家目录       
max connections = 10    #最大并发连接数,默认0(无限制)
strict modes=yes        #是否检查口令文件的权限,yes时必须为root用户权限
pid file = /var/run/rsyncd.pid      #守护进程PID路径
lock file=/var/run/rsync.lock       #指定支持max connections的锁文件
log file=/var/run/rsyncd.log        #日志输出文件路径

> [www]         #模块名称
    path = /www         #需备份的文件或目录,必设项
    comment = ftp area          #描述文字
    ignore errors           #可以忽略一些无关的I/O错误
    read only=no            #no:客户端可以上传文件       yes:只读
    write only=no           #no:客户端可以下载文件       yes:不能下载
    hosts allow=*           #*:允许连接任何主机
    hosts deny=192.168.100.10       #禁止连接rsync服务器的IP
    list=false          #客户端请求可以使用的模块列表时,该模块是否被列出
    uid=root            
    gid=root
    auth users=backup       #用户名backup,与系统用户没有任何关系
    secrets file=/etc/server.pass       #只有定义了auth users项,该文件才起作用,默认没有此文件,须手动创建(文件格式为:"用户名:密码")

Rsync 搭建远程容灾备份系统

3.创建密码文件(文件格式:user:pass)

vim /etc/server.pass

backup:www123

4.修改密码文件权限

chmod 600 /etc/server.pass

5.创建rsync启动脚本

vim /etc/init.d/rsyncd

#Description:
#!/bin/bash
#chkconfig: 2345 31 61                       # 设置chkconfig 级别
#description: start or stop rsync daemon     # 描述

. /etc/init.d/functions
pidfile=/var/run/rsyncd.pid
RETVAL=0
start_rsync(){
if [ -f $pidfile ];then                       # 判断pid文件,存在就不再启动
    echo "Rsync is already running"
else
    rsync --daemon
    action "Rsync starts successfully "  /bin/true
fi
}
stop_rsync(){
if [ -f $pidfile ];then
    kill -USR2 `cat $pidfile`
    rm -rf $pidfile                            # 停止服务,就删除pid文件
    action "Rsync stops successfully" /bin/true
else
    action "Rsync is already stopped.Stop Failed" /bin/false
fi
}
case "$1" in
    start)
        start_rsync
        RETVAL=$?
        ;;
    stop)
        stop_rsync
        RETVAL=$?
        ;;
    restart)
        stop_rsync
        sleep 2
        start_rsync
        RETVAL=$?
        ;;
    *)
        echo "Usage:$0 start|stop|restart"
        exit 1
esac
exit $RETVAL

6.赋予执行权限

chmod +x /etc/init.d/rsyncd

7.添加到系统管理

chkconfig -add rsyncd

8.启动rsyncd服务

service  rsyncd start

9.查看rsync进程

netstat -tunlp | grep rsync

Rsync 搭建远程容灾备份系统

二、容灾服务器:

1.安装rsync软件包

#解压
tar zxvf rsync-3.1.3.tar.gz -C /opt

#切换目录
cd /opt/rsync-3.1.3

#配置
./configure

#编译及安装
make && make install

2.创建密码文件

vim /etc/server.pass

www123 //同web服务器密码一致

3.修改密码文件权限

chmod 600 /etc/server.pass

4.创建rsync启动脚本

vim /etc/init.d/rsyncd

#Description:
#!/bin/bash
#chkconfig: 2345 31 61                       # 设置chkconfig 级别
#description: start or stop rsync daemon     # 描述

. /etc/init.d/functions
pidfile=/var/run/rsyncd.pid
RETVAL=0
start_rsync(){
if [ -f $pidfile ];then                       # 判断pid文件,存在就不再启动
    echo "Rsync is already running"
else
    rsync --daemon
    action "Rsync starts successfully "  /bin/true
fi
}
stop_rsync(){
if [ -f $pidfile ];then
    kill -USR2 `cat $pidfile`
    rm -rf $pidfile                            # 停止服务,就删除pid文件
    action "Rsync stops successfully" /bin/true
else
    action "Rsync is already stopped.Stop Failed" /bin/false
fi
}
case "$1" in
    start)
        start_rsync
        RETVAL=$?
        ;;
    stop)
        stop_rsync
        RETVAL=$?
        ;;
    restart)
        stop_rsync
        sleep 2
        start_rsync
        RETVAL=$?
        ;;
    *)
        echo "Usage:$0 start|stop|restart"
        exit 1
esac
exit $RETVAL

5.赋予执行权限

chmod +x /etc/init.d/rsyncd

6.添加到系统管理

chkconfig -add rsyncd

7.启动rsyncd服务

service  rsyncd start

8.添加计划性任务

crontab -e

#每分钟同步一次数据

  • 1 /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "access" --exclude "debug" backup@192.168.100.27::www /www --password-file=/etc/server.pass

测试结果

Rsync 搭建远程容灾备份系统

Rsync 搭建远程容灾备份系统