一、rsync服务器配置
1 安装xinetd、rsync软件包
yum -y install xinetd rsync
2 将rsync启动控制交给xinetd
vi /etc/xinetd.d/rsync
将disable = yes 更改为 disable = no
3 创建rsync配置文件
vi /etc/rsyncd.conf 添加
uid = root #指定该模块传输文件时守护进程应该具有的uid
gid = root #指定该模块传输文件时守护进程应该具有的gid
port = 873 #rsync侦听的端口号
use chroot = yes
strict modes = yes
max connections = 4 #客户端最大连接数,默认0(没限制)
secrets file = /etc/rsyncd.secrets # 指定帐号和密码的认证口令文件位置
pid file = /var/run/rsyncd.pid #rsyncd.pid 存放的文件位置
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log #rsync 存放的日志文件位置
[upload] # 这里是认证的模块名,在client端需要指定
path = /data/upload # 需要发布的数据文件目录
auth users = linus_hai #认证的用户名,如果没有这行,则表明是匿名
comment = used for user upload data
read only = no #no客户端可上传文件,yes只读
#write only = no #no客户端可下载文件,yes不能下载
hosts allow = 192.168.1.13 #允许指定的主机连接
#hosts deny = 192.168.1.100 #禁止指定的主机连接
[download]
path = /data/download
comment = used for user download file
read only = yes
hosts allow = 192.168.1.13
4创建密码文件
echo "linux_hai:123456">/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets#注意确保是在这个文件是600权限,否则同步无法进行
5重新启动xinetd 让rsync配置生效
service xinetd restart
/usr/bin/rsync --daemon
当出现上面现象时表示该文件已存在,必须先杀死进程才可以重新启动,方法如下:
# 要 Kill rsync 进程,不要用 kill -HUP {PID} 的方式重启进程。
# ps -ef|grep rsync|grep -v grep|awk '{print $2}'|xargs kill -9
#也可以用 # cat /var/run/rsyncd.pid | xargs kill -9
使用指令 rm -rf /var/run/rsyncd.pid
# /usr/bin/rsync --daemon
查看rsync侦听端口873
6 增加rsync开机自动启动该服务
vim /etc/rc.d/rc.local
/usr/bin/rsync --daemon
二、Linux和windows之间实现数据同步
(1)在windows 2003客户机安装rsync软件
创建一个密码存放的文件 如:G:\backup\backup.pass
(2)打开cmd,执行如下操作
#实现从客户机上传数据到服务器的指定目录
rsync.exe -avtopg <G:\backup\backup.pass /cygdrive/g/SogouWBInput linus_hai@121.9.243.207::upload/
#实现从服务器下载数据到客户机的指定目录
rsync.exe -avtopg <G:\backup\backup.pass linus_hai@121.9.243.207::download/ /cygdrive/g/
(3)在windows下编写一个脚本后缀为.bat的批处理文件,运行该文件即可完成数据同步操作。
#设置日期时间
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set today=%year%%month%%day%
#进入安装目录
D:
cd Program Files
cd cwRsync
cd bin
#实现从客户机上传数据到服务器的指定目录
rsync.exe -avtopg <G:\backup\backup.pass /cygdrive/g/SogouWBInput linus_hai@121.9.243.207::upload/
#实现从服务器下载数据到客户机的指定目录
rsync.exe -avtopg <G:\backup\backup.pass linus_hai@121.9.243.207::download/ /cygdrive/g/
(4)把脚本放到任务计划里实现定期执行数据同步
三、linux和linux之间实现数据同步
(1)Linux客户端同样也需要安装rsync这个软件包
创建密码文件(这里的密码必须与服务器上/etc/rsyncd.secrets文件里面的密码相同):
vim /etc/password.pass
123456
并保证这个文件的权限是600,否则会同步出错
chmod 600 /etc/password.pass
(2)实现数据同步:
从服务器下载数据到本地:
rsync -vzrtopg --progress --delete --password-file=/etc/password.pass linus_hai@121.9.243.207::download /data7
从本地上传数据到服务器:
rsync -vzrtopg --progress --delete --password-file=/etc/password.pass /data7/test linus_hai@121.9.243.207::upload
如果出现以上错误,原因是防火墙阻挡了rsync这个服务
解决办法:打开rsync的873端口
iptables -I RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 873 -j ACCEPT
iptables -I RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 873 -j ACCEPT
(3)制定计划任务:
vim backup.sh
#/bin/bash
rsync -vzrtopg --progress --delete --password-file=/etc/password.pass linus_hai@121.9.243.207::download /data7
rsync -vzrtopg --progress --delete --password-file=/etc/password.pass /data7/test
linus_hai@121.9.243.207::upload
添加定时任务:
crontab -e
* * * * 5 /root/backup.sh > /dev/null 2 >& 1
rsync -vzrtopg --delete --exclude "count/" --exclude "welcome.html" --progress 192.168.0.1::imdac /cygdrive/d/imdac
命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。--exclude "count/" 表示不对count目录下的文件进行备份。--exclude "welcome.html" 表示不对welcome.html文件进行备份。