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无差异同步选项一定要慎用。