1、前提条件
服务器A为主服务器,服务器B为备份服务器。我们将服务器A的/home/backup/data 目录同步到B服务器的/home/orhon/backup/data/ 目录。
思路是在A服务器上通过inotify监听文件夹的变化、如果有变化就运行rsync命令同步到B服务器。B服务器上以守护进程deamon的形式运行rsync。
- 两台服务器必须都需要安装rsync软件。安装方法不讲了。
- 源服务器安装inotify软件。
2、源服务器上的配置和操作(本文中的A服务器)
- 打开或创建备份相关文件夹,进入备份目录。
mkdir /home/backup & cd /home/backup
- 安装inotify先查看服务器是否支持inotify
ll /proc/sys/fs/inotify
会有三个文件,这说明此服务器是支持 inotify的。可以yum源安装的,如epel源。
- 创建同步任务脚本vi rsyncData.sh
#!/bin/bash host=192.168.100.100 src=/home/backup/data des=web user=orhon rsyncd_secrets=/home/backup/rsync.passwd /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \ | while read files do /usr/bin/rsync -zrtopg --delete --progress --password-file=$rsyncd_secrets $src $user@$host::$des echo "${files} was rsynced" > /var/log/rsyncd.log 2>&1 done
# –delete 参数为本地删除的话远程也会被删除。
# rsyncd_secrets 参数为密码文件的路径,本文中将文件放到了备份相关的目录里了。
- 创建同步文件所需要的密码文件,这样做是为了安全
touch /home/backup/rsync.passwd echo 'newpassword' > /home/backup/rsync.passwd
注:这里的newpassword可以是任意字符
出于安全考虑要把此文件的权限改成600:
chmod 600 /home/backup/rsync.passwd
至此A服务器的改配置的项目基本完成,但是根据服务器和环境的不同可能会会出现不同的报错情况,如防火墙原因、读写权限、端口配置等,更多问题可以参考文章rsync 常见问题记录 进行查看。
3、备份服务器上的配置操作(本文中的B服务器)
- 1、建立密码文件:
touch /etc/rsyncd.secrets echo "webuser:newpassword" >/etc/rsyncd.secrets chmod 600 /etc/rsyncd.secrets
同样要给此文件一个600的权限,注:在源服务器A建立的密码文件,只有密码,没有用户名;而在目标备份服务器B里建立的密码文件,用户名与密码都有。
- 2、写rsync的配置文件:
[web] path = /home/orhon/backup/data/ comment = Data base files ignore errors read only = no write only = no hosts allow = 192.168.100.103 hosts deny = * list = false uid = root gid = root auth users = orhon secrets file = /etc/rsyncd.secrets
- 3、目标备份服务器 启动 rsync (进程模式) (B服务器)
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
- 查看rsync进程是否开启.
ps -ef |grep rsync
root 12450 1 0 10:50 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf root 13254 13234 0 15:04 pts/0 00:00:00 grep --color=auto rsyn
说明已开启
- 实现开机自启动rsync守护进程
使用 rsync –daemon 然后放到 /etc/rc.local中的最后一行即可.
使用 echo “rsync –daemon” >>/etc/rc.local 就行了。切记是 >> 不是> .
然后使用tail -2 /etc/rc.local查看一下是否追加成功.
- 4、源服务器启动同步脚本:
/usr/bin/rsyncData.sh &
到这里,所有的都已完成。可以到源服务器下的/home/backup/data 目录下建一个文件,然后再看一下目标服务器下的/home/orhon/backup/data/ 下是否有?