配置rsync服务来同步文件
Rsync 是一个远程数据同步工具,使用 Rsync 算法同步本地和远程主机之间的文件。
搭建rsync服务来同步配置
1. 服务介绍
Rsync
本来是用于替代 scp
的一个非常有名的同步工具,目前是由 samba
软件基金会来维护和管理的,所以其配置文件 rsync.conf
的格式非常类似于 samba
的主配置文件格式。该同步工具可以通过 rsh
或 ssh
协议来使用,也能以 daemon
模式去运行,在以daemon
方式运行时 rsync server
会打开并监听一个 873
端口,等待客户端去连接。连接时,rsync server
会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。
Rsync
的几大特性如下:
- 可以镜像保存整个目录树和文件系统
- 可以很容易做到保持原来文件的权限、软硬链接等信息
- 无需特殊权限即可安装,非常方便和快捷
- 支持匿名传输,以方便进行网站镜象
- 可以使用
scp
、ssh
等方式来传输文件,当然也可以通过socket
连接 - 在传输数据的过程中实行压缩及解压缩操作节省带宽,同时也支持增量同步
Rsync
支持大多数的类 Unix
系统,无论是 Linux
、Solaris
还是 BSD
上都经过了良好的测试。此外,它在 windows
平台下也有相应的版本,如 cwrsync
和 Sync2NAS
等工具。
1 2 3 4 5 6 7 8 | # 配置文件 /etc/rsyncd.conf # 授权用户信息 /etc/rsync.passwd # 配置文件模板路径(有可能没有) /usr/share/doc/rsync-3.1.2/example/rsyncd.conf |
2. 服务端配置
- [1] 服务配置文件 - rsyncd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | [root@b8013bede7b9 ~]# cat /etc/rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # 运行rsync守护进程的用户和组 uid = root gid = root # 不使用chroot功能 use chroot = yes # 设置最大连接数 max connections = 4 # 是否检查口令文件的权限 strict modes = yes # 设置rsync守护进程运行的端口,默认为873端口 port = 873 # 设置PID/锁文件/日志文件的存放位置 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log # 超时时间,单位为秒 timeout = 900 # 同步的时候排错那些文件,多个有空格分隔即可 exclude = lost+found/ # 使服务器使用记录下载和上载操作在自己单独的日志中 transfer logging = yes # 设定日志格式 log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. # 设定rysnc服务器忽略那些没有访问文件权限的用户 ignore nonreadable = yes # 告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩 # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # 设置模块名称,用于同步的时候使用 [backup] # 指定共享文件路径、注释信息、权限、是否可列出 path = /data/app/backup comment = "backup export area" # 同步的时候需要将其修改为no,否则无法上传同步操作 read only = yes list = yes # 密码和用户名对比表,密码文件自己生成 secrets file = /etc/rsync.passwd # 认证的用户名,服务器必须存在这个系统用户,多个由逗号或者空格分隔 # 如果没有这行则表明是匿名,此用户与系统无关 auth users = escape # 可以忽略一些无关的IO错误 ignore errors # 允许主机 hosts allow = 192.168.1.1,10.10.10.10 # 禁止主机 hosts deny = 0.0.0.0/0 transfer logging = yes |
- [2] 服务运行方式 - xinetd
1 2 3 4 5 | # 方式一 /usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf # 方式二 配合将其添加到xinet服务列表中,集中进行管理 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 安装rsync和xinetd服务 $ sudo apt install rsync xinetd # 修改xinetd管理rsync的配置文件 $ cat /etc/xinetd.d/rsync service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon --config=/etc/rsyncd/rsynd.conf log_on_failure += USERID } # 生效配置 $ sudo service xinetd start $ /etc/init.d/xinetd reload # 启动服务与自启动 $ sudo chkconfig rsync on |
- [3] 服务端密码文件 - rsync.passwd
1 2 3 4 | # 文件权限一定要是600的权限,否则会报错 [root@b8013bede7b9 ~]# cat /etc/rsync.passwd user:password escape:123456 |
- [4] 可配置环境信息 - rsyncd.motd
1 2 3 | # 文件权限一定要是600的权限,否则会报错 [root@b8013bede7b9 ~]# cat /etc/rsyncd.motd Welcome to escape the rsync services! |
3. 同步配置方式
- [1] 客户端设置密码
1 2 3 4 5 | # 设置密码 echo 123456 > /etc/rsync.password # 文件的权限必须为 600 chmod 600 /etc/rsync.password |