本文共 6063 字,大约阅读时间需要 20 分钟。
一、前言
1、rsync原理及rsync+inotify触发同步
可以配置SSH信任,做信任后,同步就不需要密码文件了
2、本篇说明
为了保证数据的绝对可靠性:
首先,所有的服务器的数据都用脚本打包备份在本地一份,如上篇博客
其次,单独拿出一台pc机做备份机,为rsync客户端,每天定时却拉取各rsync服务器备份好的数据包
再次,使用rsync同步 linux 及 windows 服务器
3、服务器说明
rsync服务器:192.168.200.16,192.168.200.18
rsync客户端:192.168.1.186
这三台服务器都是linux,rsync同步windows服务器到linux服务器在第四条
二、部署rsync服务端
1、 禅道服务器(192.168.200.16)
(1)安装超级守护进程
1 | #yum –y install xinetd |
(2)为rsync服务提供配置文件
1 | #vim /etc/rsyncd.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #Global Settings uid = nobody gid = nobody use chroot = no max connections = 5 timeout = 600 pid file = /var/run/rsyncd .pid lockfile = /var/run/rsyncd .lock log file = /var/log/rsyncd .log #module [chandao] path = /opt/backup/ ignore errors = yes read only = no write only = no hosts allow = * hosts deny = * list = yes uid = root gid = root auth users = dianyi secrets file = /etc/chandao . passwd |
(3)配置rsync认证文件/etc/chandao.passwd
1 2 3 | [root@chandao ~] #echo “dianyi:dianyi” > /etc/chandao.passwd [root@chandao ~] #cat /etc/chandao.passwd dianyi:dianyi |
(4)修改/etc/chandao.passwd的权限为600
1 2 3 | [root@chandao ~] #chmod 600 /etc/chandao.passwd [root@chandao ~] # ll /etc/chandao.passwd -rw------- 1 root root 14 Jul 29 18:18 /etc/chandao . passwd |
(5)配置服务启动
1 2 | [root@chandao ~] # chkconfig rsync on [root@chandao ~] # service xinetd start |
(6)检查873端口是否成功监听
1 | [root@chandao ~] # ss -antlp | grep 873 |
(7)检查rsync运行状态
1 | [root@chandao ~] # chkconfig --list |
2、禅道数据库服务器(192.168.200.18)
(1)安装超级守护进程
1 | #yum –y install xinetd |
(2)为rsync服务提供配置文件
1 | #vim /etc/rsyncd.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #Global Settings uid = nobody gid = nobody use chroot = no max connections = 5 timeout = 600 pid file = /var/run/rsyncd .pid lockfile = /var/run/rsyncd .lock log file = /var/log/rsyncd .log #module [db_chandao] path = /opt/backup/ ignore errors = yes read only = no write only = no hosts allow = * hosts deny = * list = yes uid = root gid = root auth users = dianyi secrets file = /etc/db_chandao . passwd |
(3)配置rsync认证文件/etc/db_chandao.passwd
1 2 3 | [root@DBSlave ~] #echo “dianyi:dianyi” > /etc/db_chandao.passwd [root@DBSlave ~] #cat /etc/db_chandao.passwd dianyi:dianyi |
(4)修改/etc/db_chandao.passwd 的权限为600
1 2 3 | [root@DBSlave ~] #chmod 600 /etc/db_chandao.passwd [root@DBSlave ~] # ll /etc/db_chandao.passwd -rw------- 1 root root 14 Jul 29 18:18 /etc/db_chandao . passwd |
(5)配置服务启动
1 2 | [root@DBSlave ~] # chkconfig rsync on [root@DBSlave ~] # service xinetd start |
(6)检查873端口是否成功监听
1 | [root@DBSlave ~] # ss -antlp | grep 873 |
(7)检查rsync运行状态
1 | [root@DBSlave ~] # chkconfig --list |
三、部署rsync客户端(192.168.1.186)
1、设置rsync客户端的密码文件
(1)禅道的密码文件
1 2 3 | [root@backup ~] #echo dianyi > /etc/chandao.passwd [root@backup ~] # cat /etc/chandao.passwd dianyi |
(2)禅道数据库的密码文件
1 2 3 | [root@backup ~] #echo dianyi > /etc/db_chandao.passwd [root@backup ~] # cat /etc/db_chandao.passwd dianyi |
2、修改密码文件的的权限为600
1 2 3 4 5 | [root@backup ~] # chmod 600 /etc/chandao.passwd [root@backup ~] # chmod 600 /etc/db_chandao.passwd [root@backup ~] # ll /etc/chandao.passwd /etc/db_chandao.passwd -rw------- 1 root root 7 Jul 29 17:17 /etc/chandao . passwd -rw------- 1 root root 7 Jul 29 16:19 /etc/db_chandao . passwd |
3、测试rsync客户端是否可以从rsync服务器拉成功
1 | [root@backup ~] # rsync -vzrtopg --password-file=/etc/chandao.passwd dianyi@192.168.200.16::chandao/* /tmp |
4、rsync同步脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/bin/bash #func:rsync for chandao #Date:first write on 2014.7.29 #Version:v1.0 ntpdate 192.168.200.16 > /dev/null 2>&1 date =` date +%Y-%m-%d` dest_chandao= /opt/backup/chandao/zentao dest_db= /opt/backup/chandao/db_chandao remote_chandao=192.168.200.16 remote_db=192.168.200.18 module_chandao=chandao module_db=db_chandao user1=13910892224@139.com user2=15048088251@139.com main(){ rsync -vzrtopg --password- file = /etc/chandao . passwd dianyi@$remote_chandao::$module_chandao/*$ date * $dest_chandao if [ $? - eq 0 ]; then echo "chandao-*$date* was rsynced" >> /opt/log/chandao_rsync .log 2>&1; else echo "chandao-*$date* was not rsynced" >> /opt/log/chandao_rsync .log 2>&1; echo "Chandao rsync was faild " | mail -s "chandao backup" $user2; fi rsync -vzrtopg --password- file = /etc/db_chandao . passwd dianyi@$remote_db::$module_db/*$ date * $dest_db if [ $? - eq 0 ]; then echo "db_chandao_*$date* was rsynced" >> /opt/log/chandao_rsync .log 2>&1; else echo "db_chandao_*$date* was not rsynced" >> /opt/log/chandao_rsync .log 2>&1; echo "db_chandao rsync was faild " | mail -s "chandao backup" $user2; fi } main |
四、定时任务
1 2 3 | [root@backup ~] # crontab -e ##rsync for chandao 20 09 * * * /bin/sh /opt/scripts/rs_chandao .sh |
五、同步windows数据到linux备份机上
主体思想还是和linux保持一致的
rsync服务器需要配置2个方面:(1)配置文件 (2)密码文件
接下来就是rsync客户端配置: (1)密码文件 (2)权限设为600
1、下载cwrsync server
安装时,设置的用户和密码均为dianyi,即两台机器使用rsync相互通信时会使用到的用户名和密码
2、在这台windows上配置rsync服务器,远程linux做为rsync的客户端来拉取windows服务器上的文件
(1)修改配置文件
在C:\Program Files (x86)\ICW\rsyncd.conf 添加模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | use chroot = false strict modes = false hosts allow = * log file = rsyncd.log # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work # [svn] path = /cygdrive/e/Repositories #e代表e盘 ignore errors = yes read only = no transfer logging = yes write only = no hosts allow = * hosts deny = * list = yes uid = 0 #这里的udi和gid不再是root或是nobody,而应该是0,如果不填会报会报:@ERROR: invalid uid nobody gid = 0 auth users = dianyi secrets file = etc /svn . passwd |
(2)创建密码文件
在C:\Program Files (x86)\ICW\etc中创建密码文件svn.passwd
内容为 dianyi:dianyi
(3)启动rsync服务
运行 --> services.msc --> RsyncServer 启动类型:自动
(4)查看873端口是否监听成功
运行 --> cmd --> netstat -ano
(5)在防火墙中开放tcp 873端口
3、配置rsync客户端(remote linux:192.168.1.186)
(1)创建密码认证文件
1 2 | vim /etc/svn . passwd dianyi |
(2)设置权限
1 | chmod 600 /etc/svn . passwd |
(3)测试
1 | # rsync -vzrtopg --password-file=/etc/svn.passwd dianyi@192.168.1.64::svn/* /opt/111/ |
上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数
5、把命令添加到脚本