rsync实现文件同步

来源:互联网 发布:幕墙易云计算好用吗 编辑:程序博客网 时间:2024/05/21 09:59
rsync实现文件同步

rsync是类unix系统下的数据镜像备份工工具,一般linux系统都自带了 [可以确认一下:shell>rpm -qa|grep rsync]

服务端:192.168.1.2  同步目录:/home/source

客户端:192.168.1.3  同步目录:/home/receive

1、服务端配置

shell>vi /etc/rsyncd.conf   #创建配置文件rsyncd.conf

配置文件内容:

复制代码
uid=nobody //运行rsync守护进程的用户gid=nobody //运行rsync守护进程的组use chroot = no //不使用chrootmax connections = 10 //最大连接数,0为不限制pid file = /var/run/rsyncde.pid //pid文件存放位置lock file = /var/run/rsync.lock //锁文件存放位置log file = /var/log/rsyncd.log //日志记录文件的存放位置//通过该选项可以覆盖客户指定的IP超时时间//通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端//超时单位为秒钟,0表示没有超时定义,这也是默认值//对于匿名rsync服务器来说,一个理想的数字是600.Timeout = 300Log format = %t %a %m %f %b[backup] //这里是认证的模块名,在client端需要指定path=/home/source/ //需要做镜像的目录ignore errors //可以忽略一些无关的IO错误read only = yes //该选项设定是否允许客户上传文件list = no //不允许列文件auth users = rsync //认证的用户名secrets file = /etc/rsyncd.secrets //秘密文件(下面定义) hosts allow = 192.168.1.3 //允许主机或网段hosts deny = 0.0.0.0/0 //禁止主机
复制代码

shell>vi etc/rsyncd.secrets #创建密码文件

内容:

rsync:rsync //这里用户名和密码都定义为rsync

shell>chmod 0600 /etc/rsyncd.secrets  #更改密码文件权限

shell>rsync --daemon;  #启动服务,默认在873端口监听(可以自己修改)

2、客户端

客户端就不用启动rsync服务了

shell>vi /etc/rsyncd.secrets #这里也是创建密码文件,文件名字自定义,但内容只需要填目标服务授权密码

shell>chmod 0600 /etc/rsyncd.secrets #更改文件权限

内容:

rsync //这里是服务端rsync服务授权密码

测试:(在服务端/home/source/ 先创建test文件 )

shell>rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets rsync@192.168.1.2::backup /home/receive

v:传输时的进度等信息, z:表示压缩, r:是递归, t:保持文件原有时间, o:保持文件原有属主, P:传输进度, g:保持文件原有用户组
--progress 指显示

--delete 指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

--password-file=/etc/rsyncd.secrets 认证密码

rsync 认证用户

backup 认证模块

如果客户端/home/receive/下产生了test文件代表同步成功

下一步写一个脚本文件实现真正的同步......

启动脚本:rsync.sh 

shell>vi /home/rsync.sh

#!/bin/sh
rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets rsync@192.168.1.2::backup /home/receive

关闭脚本:killrsync.sh

shell>vi /home/killrsync.sh

#!/bin/shRSYNC_PID=`ps auxww|grep rsync |grep -v grep|awk '{print $2}'`kill -9 $RSYNC_PID

设置定时任务 (crontab?google can help you!)

shell>crontab -e

SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root0 3 * * * /home/rsync.sh //每天晚上3点执行一次同步0 6 * * * /home/killrsync.sh //每天早上6点强制终止同步(如果还没完成)

shell>crontab -l #可以查看任务设置情况

shell>service crond status #查看crond是否已启动,若启动了能看到PID

shell>service crond start #启动crond服务

0 0