rsync同步备份搭建

 

 

Rsync 是 Unix/Linux 下的一款应用软

在平常的运维中进常要对一些数据进行备份,以防止意外的服务器故障导致不可避免的后果,tar,cp只能适应一些小范围backup,对于几T甚至几P的数据却毫无用处了

rsync可以做到这一点:

 

它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜象。

件,利用它可以使多台服务器数据保持同步一致性,

Rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。可
以很容易做到保持原来文件的权限、时间、软硬链接等。

 

下面正式来配置 Rsync 服务器,模拟真实环境服务器数据同步:
A 是源服务器,B、C 为客户端服务器,因需求,B、C 服务器需要从 A 某个同步某个目
录到本地。
正式安装,官网下载 rsync 稳定版本,然后进行安装编译。
cd /usr/src ;wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
tar xzf rsync-3.0.7.tar.gz && cd rsync-3.0.7 && ./configure --
prefix=/usr/local/rsync &&make &&make install
安装完毕,配置 rsync 配置文件,默认/etc/不存在 rsyncd.conf 配置文件,需要手动
创建,配置内容为如下:cat rsyncd.conf
#########[global] 全局配置
uid = nobody
gid = nobody
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[www]
read only = yes
path = /usr/local/webapps
comment = www
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.0.11,192.168.0.12
[web]
read only = yes
path = /data/www/web
comment = web
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.1.11,192.168.0.0/24
Rsync 配置参数说明:
[www] #要同步的模块名
path = /usr/local/webapps #要同步的目录
comment = www #这个名名称无所谓,最后模块名一直)
read only = no # no 客户端可上传文件,yes 只读
write only = no # no 客户端可下载文件,yes 不能下载
list = yes #是否提供资源列表
auth users =test #登陆系统使用的用户名,没有默认为匿名。
hosts allow = 192.168.0.10,192.168.0.20 #本模块允许通过的 IP 地址
hosts deny = 192.168.1.4 #禁止主机 IP
secrets file=/etc/rsync.pas #密码文件存放的位置
启动服务器端 RSYNC 主进程,/usr/local/rsync/bin/rsync --daemon ,监听端口 TCP
873
设置 rsync 服务器端同步密钥:
vi /etc/rsync.pas
username:userpasswd (表示用户名:密码)
test:test999
保存完毕,chmod 600 /etc/rsync.pas 设置权限为宿主用户读写。
最后在客户端配置同步密钥和命令,如下设置即可同步。
vi /etc/rsync.pas 输入服务器端配置的密码:
test999
保存即可开始同步:执行如下语句
Rsync -aP --delete test@192.168.0.100::www /usr/local/webapps
--password-file=/etc/rsync.pas
Rsync -aP --delete test@192.168.0.100::web /data/www/web
--password-file=/etc/rsync.pas
注*/usr/local/webapps 为客户端的目录,@前 test 是认证的用户名;IP 后面 www 为
rsync 服务器端的模块名称。
Rsync 常用参数解析:
-a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性。
––exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
––exclude-from=FILE 从 FILE 中读取排除规则
––include=PATTERN 指定需要传输的文件匹配模式
––delete 删除那些接收端还有而发送端已经不存在的文件
-P 等价于 ––partial ––progress
-v, ––verbose 详细输出模式
-q, ––quiet 精简输出模式
––rsyncpath=PROGRAM 指定远程服务器上的 rsync 命令所在路径
––password-file=FILE
从 FILE 中读取口令,以避免在终端上输入口令,
通常在 cron 中连接 rsync 服务器时使用
. 5.2. 2 2 c Rsync 基于 H SSH 同步
除了可以使用 rsync 密钥进行同步之外,还有一个比较简单的同步方法就是基于 linux
ssh 来同步。具体方法如下:
rsync -aP --delete root@192.168.0.10:/data/www/webapps
/data/www/webapps ,如果想每次同步不输入密码,需要做 Linux 主机之间免密码登录。
. 5.2. 3 3 c Rsync 实时同步配置
在企业日常 web 应用中,某些特殊的数据需要要求保持跟服务器端实时同步,那我们该
如何来配置呢?如何来实现呢?这里可以采用 rsync+inotify 来实现需求。
Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。
Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
Rsync 安装完毕后,需要安装 inotify 文件检查软件。同时为了同步的时候不需要输入
密码,这样可以使用 ssh 免密钥方式进行同步。
安 装 inotify-tools-3.14.tar.gz 软 件 , tar – xzf
inotify-tools-3.14.tar.gz ;./configure ;make
;make install 即可。配置 auto_inotify.sh 同步脚本,内容如下:
#!/bin/sh
src=/data/webapps/www
des=/home/webapps/
ip=192.168.0.11
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e
modify,delete,create,attrib ${src} | while read file
do
for i in $ip
do
/usr/local/rsync/bin/rsync -aP --delete $src root@$ip:$des
done
done
在服务器端后台启动该脚本,nohup sh auto_inotify.sh & ,在服务器端目录新建
或者删除,客户端都会实时进行相关操作。

要保持着对知识的渴求,给自己充电,不要这荒废了短暂的时光;
原文地址:https://www.cnblogs.com/activecode/p/9354570.html