1.  环境规划:

主机名

主机地址

角色

node1

192.168.56.111

rsync-server

node2

192.168.56.112

rsync-client

2.  两个节点安装rsync:

[root@node1 ~]# yum install rsync -y

3.  配置rsync服务端:

[root@node1 ~]# vim /etc/rsyncd.conf

uid = rsync  ##用户id
gid = rsync  ##组id

use chroot = no
max connections = 200
timeout = 300
fake super = yes

pid file = /var/run/rsyncd.pid  ##进程号文件位置
lock file = /var/run/rsync.lock  ##进程锁文件位置
log file = /var/log/rsyncd.log  ##日志文件位置

##资源名称
[tools]
  comment = test data  ##资源提示信息
  path = /testdata/  ##同步数据的目录
  ignore errors  
  read only = false  ##是否为只读模式(true为只读,false为可读可写)
  list = false
  hosts allow = 192.168.56.0/24  ##允许访问的ip
  hosts deny = 0.0.0.0/32  ##拒绝访问的ip
  auth users = rsync_backup  ##虚拟用户
  secrets file = /etc/rsyncd.passwd  ##存放用户和密码的文件

4.  创建启动服务时所需的资源:

[root@node1 ~]# mkdir /testdata  ##创建数据同步的目录

[root@node1 ~]# useradd -s /sbin/nologin -M rsync  ##创建用户
 
[root@node1 ~]# chown -R rsync:rsync /testdata/  ##修改目录属主属组

[root@node1 ~]# echo "rsync_backup:123456" >> /etc/rsyncd.passwd  ##创建用户和密码文件

[root@node1 ~]# chmod 600 /etc/rsyncd.passwd  ##修改文件权限

5.  启动rsync:

[root@node1 ~]# systemctl start rsyncd

[root@node1 ~]# systemctl status rsyncd

6.  客户端准备同步的文件:

[root@node2 ~]# mkdir /testdata

[root@node2 ~]# cd /testdata/

[root@node2 testdata]# echo "test1" > test1.txt
[root@node2 testdata]# echo "test2" > test2.txt
[root@node2 testdata]# echo "test3" > test3.txt

7.  同步文件:同步目录时,若以" / "结尾则表示同步目录下所有文件,不会连同目录一起同步;若不以" / "结尾则表示同步目录下所有文件并且会连同目录一起同步。

[root@node2 testdata]# rsync -avz /testdata/*.txt rsync_backup@node1::tools(资源名)
Password: 
sending incremental file list
test1.txt
test2.txt
test3.txt

sent 234 bytes  received 81 bytes  70.00 bytes/sec
total size is 18  speedup is 0.06


[root@node1 ~]# ls /testdata/
test1.txt  test2.txt  test3.txt

rsync选项及功能:

选项

功能

-a

归档模式,表示以递归方式传输时,保持所有文件属性

-v

显示同步过程的信息,比如文件列表、文件数量等。

-z

在传输文件的同时进行压缩

-P

显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。

-p

表示保持文件权限。

-r

表示以递归模式处理子目录,它主要是针对目录来说的,如果单独传一个文件不需要加 -r 选项,但是传输目录时必须加。

--progress

表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等。

--password-file

指定密码文件

8.  测试增量同步:

[root@node2 testdata]# echo "11111" >> test1.txt

[root@node2 testdata]# rsync -avz /testdata/*.txt rsync_backup@node1::tools
Password: 
sending incremental file list
test1.txt

sent 147 bytes  received 49 bytes  78.40 bytes/sec
total size is 24  speedup is 0.12

[root@node1 ~]# cat /testdata/test1.txt 
test1
11111

9.  同步时排除指定文件:

[root@node2 testdata]# echo "test.log" > test.log
[root@node2 testdata]# echo "test2.log" > test2.log 
[root@node2 testdata]# echo "test.conf" > test.conf

##要排除的文件信息
[root@node2 testdata]# vim /etc/exclude

*.log

[root@node2 testdata]# rsync -avz --exclude-from=/etc/exclude /testdata/* rsync_backup@node1::tools
Password: 
sending incremental file list
test.conf

sent 168 bytes  received 43 bytes  84.40 bytes/sec
total size is 34  speedup is 0.16

[root@node2 testdata]# echo "test2.conf" > test2.conf

[root@node2 testdata]# rsync -avz --exclude=*.log /testdata/* rsync_backup@node1::tools
Password: 
sending incremental file list
test2.conf

sent 189 bytes  received 43 bytes  66.29 bytes/sec
total size is 45  speedup is 0.19

[root@node1 ~]# ls /testdata/
test1.txt  test2.conf  test2.txt  test3.txt  test.conf

选项:--exclude-from=FILE:以文件方式指定同步要排除的文件,可以一次排除多个文件。
      --exclude=*.log:指定同步要排除的文件,一次只能指定一个文件。

10.  无差异同步:使用" --delete "参数,一般用于两台负载均衡下面的web服务器之间的同步,或者高可用双机配置直接的同步等。rsync无差异同步选项一定要慎用