rsync 通过服务同步(上)

服务介绍

在使用该方法进行同步之前需要先在服务的开启相应服务同时要监听一个端口(可自定义),默认是监听 873 端口,开启服务之前编辑 rsync 配置文件“/etc/rsyncd.conf”(将服务添加进去)然后直接使用命令:“rsync
–daemon(服务名称)”进行同步。或者将配置文件写到一个自定义文件中,使用命令“rsync –configfile”进行同步。 配置完成后客户端可以通过指定端口与服务端进行通信。

这种方式可以理解成这样,在远程主机上建立一个 rsync 的服务器,在服务器上配置好 rsync 的各种应用,然后本机作为 rsync 的一个客户端去连接远程的 rsync 服务器。如何去配置一台 rsync 服务器。

准备工作:

服务端 192.168.197.128(主机名 dl-001)
客户端 192.168.197.127 (主机名 dl-002)

配置文件具体步骤:

1. 在 /etc/rsyncd.conf 配置文件中添加服务:

[root@dl-001 ~]# vi /etc/rsyncd.conf
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.197.128
[test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.197.127 1.1.1.1 2.2.2.2  192.168.197.0/24

说明:

shuo 其中配置文件分为两部分:全部配置部分和模块配置部分,全局部分就是几个参数而已,就像 rsyncd.conf 中 port, log
file, pid file,
address 这些都属于全局配置,而 [test] 以下部分就是模块配置部分了。一个配置文件中可以有多个模块,模块名自定义,格式就像 rsyncd.conf 中的这样。其实模块中的一些参数例如 use
chroot, max connections, udi, gid, auth users, secrets file 以及 hosts
allow 都可以配置成全局的参数。

参数意义:

port 指定在哪个端口启动 rsyncd 服务,默认是 873;

log file 指定日志文件;

pid file 指定 pid 文件,这个文件的作用涉及到服务的启动以及停止等进程管理操作;

address 指定启动 rsyncd 服务的 IP,假如你的机器有多个 IP,就可以指定其中一个启动 rsyncd 服务,默认是在全部 IP 上启动;

test 指定模块名,自定义;

path 指定数据存放的路径;

use chroot true|false
默认是 true,意思是在传输文件以前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以 roots 权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下 chroot 值为 true,如果你的数据当中有软连接文件的话建议设置成 false;

max connections 指定最大的连接数,默认是 0 即没有限制;

read only ture|false 如果为 true 则不能上传到该模块指定的路径下;

list 指定当用户查询该服务器上的可用模块时,该模块是否被列出,设定为 true 则列出,false 则隐藏;

uid/gid 指定传输文件时,以哪个用户 / 组的身份传输;

auth users 指定传输时要使用的用户名;

secrets file 指定密码文件,该参数连同上面的参数如果不指定则不使用密码验证,注意该密码文件的权限一定要是 600;

hosts allow 指定被允许连接该模块的主机,可以是 IP 或者网段,如果是多个,之间用空格隔开;


2. 启动服务

[root@dl-001 ~]# rsync --daemon
说明:如果想开机启动,请把 rsync --daemon --confg=/etc/rsyncd.conf 写入到/etc/rc.d/rc.local文件

说明:如果启动完此服务进程之后,想杀死此进程需要使用 killall rsync(语法为 killall 进程名)


3. 检测是否启动服务

[root@dl-001 ~]# ps aux |grep rsync
root      2247  0.0  0.0 114644   540 ?        Ss   16:42   0:00 rsync --daemon
root      2249  0.0  0.0 112664   972 pts/0    S+   16:42   0:00 grep --color=auto rsync

4. 检查监听端口

[root@dl-001 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1342/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1979/master         
tcp        0      0 192.168.197.128:873     0.0.0.0:*               LISTEN      2247/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      1342/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1979/master      

5. 创建数据存放的路径并赋予权限(也就是配置文件中的 path, 如果有这个文件就无需创建了)

[root@dl-001 ~]# mkdir /tmp/rsync
[root@dl-001 ~]# chmod 777 /tmp/rsync    //语法权限方便测试

6. 为了不影响实验过程,还需要把两台机器的 firewalld 服务关闭,并设置成不开机启动。

[root@dl-001 tmp]# systemctl stop firewalld        //两台机器都需要设置

7. 查看 873 端口是否是通的

[root@dl-001 ~]# telnet 192.168.197.128 873
Trying 192.168.197.128...
Connected to 192.168.197.128.
Escape character is '^]'.
@RSYNCD: 30.0
^]        //按Ctrl+] 退出telnet

7. 在 dl-002 客户端上测试

[root@dl-002]# rsync -avL test@192.168.197.128::test/test1/ /tmp/test5/    //将test1同步到dl-001机器的/tmp/rsync(配置文件中的path设置路径)中,并更改名称为test5
Password:
receiving incremental file list
created directory /tmp/test5
./
1
1.txt
2
2.txt
3
4

sent 143 bytes  received 354 bytes  994.00 bytes/sec
total size is 0  speedup is 0.00

注意:

  • 刚刚提到配置文件 /etc/rsyncd.conf 中有一个选项叫做 “use chroot”
    默认为 true,如果是 true,同步的文件中如果有软连接,则会有问题。如果有软链接需要设置成 false 即可。
  • 修改完 rsyncd.conf 配置文件后,不需要重启 rsyncd 服务,这是 rsync 的一个特定机制,配置文件时即时生效的,不用重启服务。