Linux下利用rsync实现多服务器文件同步
windows做为文件服务器,使用rsync的windows服务版本,然后配置好就可以了。需要的朋友可以参考下。
windows做为文件服务器,使用rsync的windows服务版本:cwRsyncServer 下载地址:http://rsync.samba.org
安装过程要设置用于系统服务的帐号和密码,可以默认。
注:此帐号用于启用crsync server服务,需要分配给帐号对要同步文件的相应权限,否则无法操作被同步的文件。
目标:多服务器文件同步
环境:2台CentOS5.6
Web端:192.168.20.20
Backup端:192.168.20.21
需要备份目录为:192.168.20.20:/usr/local/web1 /usr/local/web2
第一步:服务器端的配置
#rpm –qa |grep rsync && rpm –e rsync-** --dodeps
如果没有的话,则自行下载安装 (yum –y install rsync)

#cd /usr/local/ # wget http://www.samba.org/ftp/rsync/src-previews/rsync-3.0.6pre1.tar.gz #tar –zxvf rsync-3.0.6pre1.tar.gz #cd rsync-3.0.6pre1 #./configure –prefix=/usr/local/rsync # make && make install # vi /etc/rsyncd.conf


uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /usr/local/rsync/pid/rsyncd.pid
lock file = /usr/local/rsync/pid/rsync.lock
log file = /usr/local/rsync/pid/rsyncd.log
secrets file=/usr/local/rsync/pwd/rsyncd.pwd
hosts allow = 192.168.20.0/24
hosts deny = * [web1]
path=/usr/local/web1
comment = backup web1
ignore errors
read only = yes
#list = no
auth users = web1 [web2]
path=/usr/local/web2
comment = backup web2
ignore errors
read only = yes
#list = no
auth users = web2

uid = nobody //指定文件传输过程中的用户身份
gid = nobody //指定文件传输过程中的组身份
log file = /var/log/rsyncd.log //指定使用独立的日志文件的位置
pid file = /var/run/rsyncd.pid //保存pid到指定文件,以便于使用脚本终止进程
read only = yes //该目录设置为只读,即只允许客户端下行同步,不允许上传。若需要进行从备份机还原数据,改为no
rsyncd默认在873端口监听服务,可在客户端使用telnet连接测
# mkdir -p /usr/local/pid # mkdir -p /usr/local/pwd # vi /usr/local/rsync/pwd/rsyncd.pwd
web1:123456@789 web2:789@123456
格式为:用户名:密码
设置密码文件仅仅root用户能访问
#chmod 600 /usr/local/rsync/pwd/rsyncd.pwd # cp /usr/local/rsync/bin/rsync /usr/bin/
在服务器端启动rsync服务
# rsync –daemon (注意重启kill后要把.pid .lock删掉)
第二步:备份端的配置
安装rsync软件,同上
设置密码文件只需填写对应密码:

# touch /usr/local/rsync/web1 # touch /usr/local/rsync/web2 # vi /usr/local/rsync/web1 123456@789 # vi /usr/local/rsync/web2 789@123456

同时设置为只有root有权限
# chmod 600 /usr/local/rsync/wbe1
创建备份目录
# mkdir -p /usr/local/web1 # mkdir -p /usr/local/web2 # rsync –daemon
把服务器端文件web1备份到本机(备份机):
# /usr/bin/rsync -vzrtopg --progress --delete --exclude "logs/" --exclude "conf/ssl.*/" --password-file=/usr/local/rsync/web1 web1@192.168.20.20::web1 /usr/local/web1
# Web2 也是一样的如上手动进行同步
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致, 删除本地目录中多余的文件
-- exclude "logs/" 表示不对/web1/logs目录下的文件进行备份。
--exclude "conf/ssl.*/"表示不对/web1/conf/ssl.*/目录下的文件进行备份。
如果需要可以放到crontab 计划任务中间隔性的进行同步备份!
将以上命令写入计划任务,每1分钟执行,即可实现实时同步的效果。
注:
上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。-- progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
附,rsync使用时的常见问题:
错误1: rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]
解决:很大可能是服务器端没有开启 rsync 服务。开启服务。 或者开启了防火墙指定的端口无法访问。
错误2:@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。
错误3:@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:服务器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解决。
错误4:@ERROR: invalid uid nobody
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2]
解决:在rsyncd.conf文件中添加下面两行即可解决问题
UID = 0
GID = 0
错误5:@ERROR: auth failed on module test2
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2]
解决:服务端没有指定正确的secrets file,请在 [test2]配置段添加如下配置行:
auth users = coldstar #同步使用的帐号
secrets file = rsyncd.secrets #密码文件
错误6:password file must not be other-accessible
解决:客户端的pass文件要求权限为600, chmod 600 /etc/rsync.pass 即可。
转自 http://www.cnblogs.com/keheng/p/3800734.html
Linux下利用rsync实现多服务器文件同步的更多相关文章
- linux下基于rsync + find命令实现文件同步机制
rsync和find是linux系统自带的命令,如果没有安装可以找到系统安装盘或者ISO文件,里面有rpm包,安装一下就可以了. 具体思路如下: 1)可以实现定时进 ...
- 【java】 linux下利用nohup后台运行jar文件包程序
Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...
- linux下利用nohup后台运行jar文件包程序
Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...
- linux下 利用 rz 命令上传文件
1. 如何安装? 1)编译安装 root 账号登陆后,依次执行以下命令: # cd /tmp # wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20 ...
- Linux下使用wget下载FTP服务器文件
wget -nH -m --ftp-user=your_username --ftp-password=your_password ftp://your_ftp_host/* 使用命令下载ftp上的文 ...
- (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步
Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
- linux下利用elk+redis 搭建日志分析平台教程
linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...
- linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改
原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开 ...
随机推荐
- Boring count(字符串处理)
Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Fibonacci Again 分类: HDU 2015-06-26 11:05 13人阅读 评论(0) 收藏
Fibonacci Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- 简单的分页sql
select top 5 * from books where id not in(select top (5*(5-1)) id from Books order by id) order by i ...
- Poj(2253),Dijkstra松弛条件的变形
题目链接:http://poj.org/problem?id=2253 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通 ...
- web前端职业规划
关于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了, 坚持去认真走,就好.在这里,我只是简要说一下自己对于这块儿内容的理解.有一个观点想要分享 ...
- 项目文件中含有两个config文件,app.config与app1.config,如何获取app1.config中的配置
想要通过配置文件配置C#前台画面,好奇做了以下测试:在项目中新建了app.config与app1.config两个配置文件,请教一下各位高手如果想从app1.config中读取配置信息应该如何读取?采 ...
- easyui commbox嵌入一个checkbox的实现
function InitComBoBox(datagrid, combxid, formid, url, valueField, textField,_prompt) { $(combxid).co ...
- 2016年10月29日 星期六 --出埃及记 Exodus 19:14
2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...
- OS开发(Objective-C)常用库索引
code4app.com 这网站不错,收集各种 iOS App 开发可以用到的代码示例 cocoacontrols.com/ 英文版本的lib收集 objclibs.com/ 精品lib的收集网站 h ...
- 在C++工程中设置全局函数
在头文件中对该函数进行全局函数的声明: extern void Test(); 在cpp文件中进行函数的定义: void Test() { MessageBox(NULL,L"调用了C++的 ...