Rsync数据同步及同步方式

Rsync(Remote Sync)是Linux下一款应用软件,利用它可以使多台服务器数据保持同步一致,第一次同步rsync会复制全部内容,但在下一次只传输修改过的文件。

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

案例:

A 源服务器        -------安装Rsync服务端

B、C 客户端服务器   -------安装Rsync客户端,由客户端发起同步操作


B、C服务器需要从A同步某个目录到本地

1、源服务器A 编译安装Rsync

wget -c -P /src/ https://rsync.samba.org/ftp/rsync/src/rsync-3.1.2.tar.gz

tar zxvf /src/rsync-3.1.2.tar.gz -C /src/

cd /src/rsync-3.1.2

./configure --prefix=/usr/local/rsync

make && make install

2、源服务器A 配置

基于Rsync密钥方式同步及配置

默认/etc不存在rsyncd.conf配置文件,需要手动创建,配置内容如下:

#########[global] 全局配置

uid = nobody

gid = nobody

use chroot = yes

max connections = 5

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服务器端同步密钥

vim /etc/rsync.pas
username:userpasswd #表示用户名:密码
test:test999
保存完毕,chmod 600 /etc/rsync.pas  设置权限为宿主用户读写

3、客户端服务器配置

同步密钥和命令,如下设置即可同步

vi /etc/rsync.pas 输入服务器端配置的密码
test999
保存完毕,chmod 600 /etc/rsync.pas  设置权限为宿主用户读写;开始同步,执行如下语句:

rsync -aP --delete [email protected]::www/usr/local/webapps   --password-file=/etc/rsync.pas  

rsync -aP --delete [email protected]::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 服务器时使用

4、测试

在客户端上执行以下命令进行数据同步:

rsync -arv [email protected]::test /usr/local/src/ --password-file=/etc/rsync.pas

--------------------------------------------------------------------------------------------------

Rsync基于ssh同步

除了可以使用rsync密钥进行同步之外,还有一个比较简单的同步方法就是基于linux ssh来同步。具体方法如下:

rsync -aP --delete [email protected]:/data/www/webapps/data/www/webapps
如果不想每次同步都输入密码,需要做Linux主机之间免密码登录





你可能感兴趣的:(Rsync)