Linux rsync实现跨网段文件同步
公司的两个(A和B)分别放在电信和网通!笔者要解决的是将两个服务器,用户所上传的,能够同时存放在A和B上,实现数据的同步.
现采用LINUX下的RSYNC软件实现.
笔者的操作系统A和B都为AS4.先介绍一下A服务器RSYNC的安装
1.下载RSYNC软件:
wget
2.解压安装
shell> tar -zxvf rsync-2.6.9.tar.gz
shell> cd rsync-2.6.9
shell> ./configure --prefix=/server/rsync
shell> make
shell> make install
3.安装完成后,在rsync.2.6.9中,并无RSYNC的配置文件,故,要手工创建
shell>vi /etc/rsyncd.conf #内容如下
uid=nobody
gid=nobody
max connections=4
user chroot=yes
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.pwd
#hosts allow=218.107.243.2,60.173.7.35
#hosts deny=60.173.7.34
[backup]
path=/var/www/backup
comment=backup 60.173.7.35
ignore errors
read only=no
list=yes
auth users=backup
4.再来创建密码文件.
vi /etc/rsyncd.pwd
backup:123456
有多个用户,在第二行列出!
处于安全原因,要将该文件更改权限(如果不更改权限,后期复制时,会出现错误)
chmod 600 /etc/rsyncd.pwd
注:此用户和密码,非系统用户的密码,也就是说系统中无需创建upfiles用户!
5.运行服务
/server/rsync/bin/rsync --daemon
此时用ps -aux|grep rsync就能看到rsync --daemon进程!
6.测试
/server/rsync/bin/rsync rsync://backup@A自己的IP地址/backup
看一下能否看到自己所共享文件夹下的文件(如果上在的参数码相机list=no,可会看不到,故在测试时,请将list=yes)
如果能看到,则服务器的配置结束,下面进行服务器B的设置!
B服务器上暂时我们只设置这的客户端的功能,也就是说,只从服务器A中同步数据!所以我们也要安装RSYNC软件,安装方法同上!
安装完成后,先进行手工同步测试
/server/rsync/bin/rsync -vzrutogp --progress backup的IP地址::backup /var/www/backup
要求输入密码(服务器上设置的)后,有看到复制数据的信息.表明成功!因为我们想让数据同步的过程自动化,所以我们要创建个脚本:
vi /usr/local/rsync/backup.sh
/server/rsync/bin/rsync -vzrutogp --progress --password-file=/etc/rsyncclien
t.pwd backup /var/www/backup
说明:--password-file提明连接请求的密码文件,这个我们也要手工建立
vi /et/rsyncclient.pwd
只输入密码,不要输入用户名,在这里,我们只要输入123456,保存退出即可!
注意rsyncclient.pwd是600 root所有
我们手工执行一次 /server/rsync/backup.sh,如果成功,直接写入crontab中即可!
crontab -e
*/2* * * * /server/rsync/backup.sh
那么,当服务器A中填加一个文件,或某一个文件,有任何变化,B服务器都会跟前发生变化!但是,如果服务器A中的一个文件删除了,A是不能将其删除的!
如果你想真正的实现A,B服务器相同,可在backup.sh的rsync命令后加入参数--delete即可!
我没有加,是因为我不但要保证A服务器文件变化要复制到B上去,同时我还要将服务器B上的文件变化转到A上去!所以不能加--delete参数,否则两个服务器文件的同步,无法实现!
同样的配置,反过来,将B设成服务器,将A设成客户端,两个服务器上的文件即可同步,唯一的一个问题是,采用这种方法,可以使文件完全相同,但任何一个服务器上删除文件,都将不成功,它会在另外一台复制回来!不知是否可以解决这个问题!如果我研究出来了,会及时发布出来!
安装过程常见问题解答
1. Q: 出現以下這個訊息, 是怎麼一回事?
@ERROR: auth failed on module xxxxxrsync: connection unexpectedly closed (90 bytes read so far)rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.pwd ,rsyncd.sec中的密碼設定, 二端是否一致?有时服务器
端没有起动服务也会出现这种情况
2. Q: 出現以下這個訊息, 是怎麼一回事?
password file must not be other-accessible
continuing without password file
Password:
A: 這表示 rsyncd.pwd rsyncd.sec 的檔案權限屬性不對, 應設為 600
請下 chmod 600 rsyncd.pwd rsyncd.sec
3. Q: 出現以下這個訊息, 是怎麼一回事?
@ERROR: chroot failedrsync: connection unexpectedly closed (75 bytes read so far)rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這通常是您的 rsyncd.conf 中
的 path 路徑所設的那個目錄並不存在所致.
請先用 mkdir 開設好備份目錄.
4.Q:出现一下信息是怎么回事
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
所以情況會是:
1. 對方主機沒開機
2. 對方有 firewall 阻擋
3. 所通過的網路上有 firewall 阻擋
shell>setup #关闭防火墙,其实最重要的也就是把tcp udp 的873端口打开。
- 最新评论