实施目的:
实现将文件从10.0.0.40/wb/的文件同步到10.0.0.194/wb/下 实施流程:
1.在两台机器上安装rsync
2.配置服务端(被同步服务器),10.0.0.194 vi /etc/rsyncd.conf
添加以下内容:
uid = tomcat #设置执行rsync的本地用户
gid = tomcat #设置执行rsync的本地组
use chroot = yes #是否chroot
max connections = 4 #最大同时连接数
pid file = /var/run/rsyncd.pid #指定rsync服务进程的pid file
lock file = /var/run/rsync.lock #指定rsync服务端锁定文件log file = /var/log/rsyncd.log #指定rsync的log输出路径
log file = /var/log/rsyncd.log #设置执行rsync的本地组
[logfile] #模块设定,可设置多个模块
path = /wb/log/ #同步文件的真实路径
ignore errors
read only = false #是否只读
list = false
hosts allow =10.0.0.40/255.255.255.240 #允许同步的ip/网段
hosts deny = 0.0.0.0/32
auth users = backznfs #身份验证用户。这不是系统用户,而是rsync服务自定的
secrets file = /etc/rsyncd.pwd #logfile模块的密码文件
[testabc]
path = /wb/abc/
ignore errors
read only = false
list = false
hosts allow =10.0.0.40/255.255.255.240
hosts deny = 0.0.0.0/32
auth users = backznfs
secrets file = /etc/rsyncd.pwd
|
uid和gid指明了运行身份(本机上创建该用户,由于40上的文件目录权限都是tomcat所以本机创建tomcat用户),chroot表示连接后自动切换目录,read only=false是允许别的客户端向本机的服务器端上传。host allow和deny是限制连接地址。auth user是认证用户名,secrets file = /etc/rsyncd.pwd是表示认证用户名的时候到这里读取密码。
3.编写密码文件(服务端含用户名和密码) vi /etc/rsyncd.pwd
backznfs:123456
|
4.启动服务端,服务端的工作完成 /usr/bin/rsync --daemon #启动服务
ps -ef|grep rsync #查看进程
|
5.创建密码文件: #vi /root/rsync.pwd
123456
|
6.在客户端执行命令测试(下方列出了几项常见错误)
7.编写定时运行脚本;
| 新建日志备份脚本文件
#vi rsync_log.sh
rsync -vrtL --progress
--exclude "www" /wb/log* backznfs@10.0.0.194::logfile --password-file=/root/rsync.pwd
| 注:--exclude "www" 表示除去/wb/log/www这个目录不同步,不除去可以不写;
-v参数表示显示输出结果,r表示保持属性,t表示保持时间,L表示软link视作普通文件。
–delete 是指如果Server端删除了一文件,那客户端也相应把这一文件删除,保持真正的一致
|
./rsync_log.sh 可手动执行是否正确(注:如果无法自动补齐文件名,说明无可执行文件;如果是脚本调用的话并不需要执行权限。)
错误原因:服务端未开启服务;
错误原因:客户端密码文件需设置为600;(或700,但未测试700)
可能错误原因:1、两边密码是否匹配;
2、服务端密码文件中要带上用户名、客户端的不用;
3、服务端的密码文件是否设置为600;
错误原因:1、目录不存在;
2、调用的配置文件中的路径属性名称是否写错;
错误原因:
/etc/rsyncd.conf配置文件中有错误,例如uid = rsync写成了d = rsync.请仔细检查
错误原因:权限不够,必须保证服务端目录的权限不低于客户端(发送方);
注:修改配置文件不需要重启服务.
#查看错误日志
tail -f /var/log/rsyncd.log
8.定时任务,调用脚本文件。
crontab -e (编辑文件,输入以下内容,自动定义规则)
1,20,40 * * * * /root/rsync_log.sh>/dev/null
| crontab -l (查看定时任务)
注意事项:
1.密码文件两边都有,注意目录 2.两个服务器文件目录的权限要一致;起码保证服务端目录的权限不低于客户端(发送方);
|