这边主要给大家介绍的是服务器模式
服务器模式:
企业案列: 搭建远程容灾备份系统
- uid=nobody #指定该模块传输文件时守护进程应该具有的用户ID,默认为nobody
- gid=nobody #指定该模块传输文件时守护进程应该具有的用户组ID,默认为nobody
- use chroot=no ##是否让进程离开工作目录
- max connections=10 #指定该模块的最大连接数
- strict modes=yes #用于指定是否检查口令文件的权限,yes为检查口令权限,如果设置为yes,密码文件的权限必须为root用户权限
- pid file=/var/run/rsyncd.pid
- lock file=/var/run/rsyncd.lock
- log file=/var/log/rsyncd.log
- [abc]
- path=/abc
- comment=abc file
- ignore errors #表示可以忽略一些无关的I/O错误
- read only =no #设置为no表示客户端可以上传文件,设置为yes表示只读
- write only=no #设置为no表示客户端可以下载文件,设置为yes表示不能下载
- hosts allow=*
- hosts deny=192.168.1.131
- list=false #用于设定当客户请求可以使用的模块列表,该模块是否被列出,默认为true
- uid=root
- gid=root
- auth users=backup
- secrets file=/etc/server.pass
- /etc/server.pass下内容为:backup:abc123
- A系统上启动rsync:/usr/local/bin/rsync --daemon
B系统上配置rsync: 在备份机 上不用做任何配置,只需执行rsync同步操作即可,为了同步过程中不用输入密码,需要在B系统上创建一个serve.pass文件,该文件的 内容与A系统上的server.pass密码一样即可,路径可以随意放,用时指定就行
我们可以把它写成一个脚本方便管理:vim /root/rsync.sh
常见问题: 问题一:
- #!/bin/bash
- #Decription:rsync Config
- /usr/local/bin/rsync -vzrtopg--delete --progress --exclude "*access" --exclude "debug*" \
- backup@192.168.1.10::/abc /date --password-file=/etc/server.pass
- #-vzrtopg:
- v是“--verbose”显示详细输出模式
- z是“--compress”压缩模式
- r是“--recursive”以子目录递归模式
- t是“--times“用来保持文件信息时间
- o是”--owner“用来保持文件的属主信息
- p是”--perms“用来保持文件权限
- g是”--group“用来保持文件的属组
- --progress:用来显示数据镜像同步的过程
- --delete:指定以rsync服务器为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致
- --exclude:用于排除不需要文件传输的类型
- /date:用户指定备份文件在客户端机器上的存放路径
chmod +x /root/rsync.sh
每天3点钟的时候自动执行这个脚本进行数据同步可以crontab
crontab -e
0 3 * * * /root/rsync.sh >/dev/null 2>&1
- @ERROR: chroot failed
- rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 原因:服务器端的目录不存在或无权限。
- 创建目录并修正权限可解决问题。
问题二:
- @ERROR: auth failed on module tee
- rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
- 原因:
服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。
问题三:
- @ERROR: Unknown module ‘tee_nonexists’
- rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服务器不存在指定模块。
提供正确的模块名或在服务器端修改成你要的模块以解决问题。