服务介绍

在使用该方法进行同步之前需要先在服务的开启相应服务同时要监听一个端口(可自定义),默认是监听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的一个特定机制,配置文件时即时生效的,不用重启服务。