rsync实现Linux服务器之间增量备份

可以用于线上服务器同步代码。

主服务器

rsync为C/S架构,一台主服务器,可以有多台从服务器

1.主服务器(需要备份的服务器):配置好yum源,安装rsync服务端

#yum install rsync

2.创建rsync 同步目录/data,此目录里面的内容将被同步到从服务器上

#mkdir /data

3.创建权限认证文件,此文件用于存放从服务器验证身份,格式为“username:password”,该用户与操作系统上面的用户没有一点关系,所以系统上不需要创建此用户。文件可使用任意名称,最好容易识别

#vim /etc/rsyncd.pass
wujingchao:123456

安全起见密码文件权限需修改为600

#chmod 600 /etc/rsyncd.pass

4.创建 rsync 配置文件/etc/rsyncd.conf,默认是没有这个文件的

uid=root      #该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定rsync具有访问那些文件夹的权限,默认值是"nobody",我们可以根据相应的需要进行配置。
gid=root      #该选项指定当该模块传输文件时守护进程应该具有的gid,默认值是”nobody”。
use chroot=no                      #不使用chroot
max connections=20                 #设置最大连接数,默认为0,即无限制。这里设置为20.
strict mode =yes                   #设置是否检查口令文件的权限
pid file=/var/run/rsyncd.pid       #指定rysnc进程的pid文件位置 
lock file=/var/lock/rsync.lock     #指定支持max connections的锁文件
log file=/var/log/rsyncd.log       #指定 rsync日志输出路径
[your_model_name]                       #*模块名,可使用任意名称*
path=/data/                        #*源目录路径*
comment=Test rsync                 #模块描述
ignore errors                      #出现I/O错误时可忽略。
read only=no                       #是否只读,设置为no时客户端可上传文件。
write only=no                      #设置为no 时客户端可下载文件。
hosts allow=192.168.0.100          #*允许访问主机*
hosts deny=*                       #拒绝访问的主机,*表示所有主机。
list=false                         #设置客户端请求时是否列出该模块,false为隐藏。                 
auth users=wujingchao              #设置连接时使用的用户,即密码文件里面定义的用户名。
secrets file=/etc/rsyncd.pass      #指定密码文件位置

1.启动rsync守护进程

启动服务

手动方式(–config用于指定rsyncd.conf的位置,如果在/etc下可以不写)

#/usr/bin/rsync --daemon  --config=/etc/rsyncd.conf

xinetd方式

如果没有安装xinet,请先安装,

#yum install xinet

在rsync默认安装完成后,安装程序会自动在建立/etc/xinetd.d/rsync文件,但是默认情况是disable = yes,需要修改disable=no 即可然后,我们通过xinet启动rsync:

#service xinetd start/restart

好了这样主服务器就配置好了,启动之后可以看一下873是否处于监听状态

#netstat -tnlp

如果该端口被防火墙作用:

开启873端口

#iptables -I INPUT -p tcp --dport 873 -j ACCEPT

从服务器

1.安装rsync

2.配置权限认证文件里面写入与主服务器相同的密码,不需要再写username

        #vim /etc/rsyncd.pass
        123456

3.创建备份的文件夹

        #mkdir /backup

4.执行同步命令

    #/usr/bin/rsync -avzP --delete --progress --exclude-from=/etc/exclude.conf --password-file=/etc/rsyncd.pass wujingchao@192.168.0.100::your_model_name /backup
--exclude-from 表示要排除上传哪些文件或者那些后缀的文件execlude.conf示例文件如下

    admin/doAddProFromcsv/
    site_data/
    .dat
    .log
    .txt
    .xml
    add_admin.php