一、前言
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
<code>#yum –y install xinetd</code>
(2)為rsync服務提供配置檔案
<code>#vim /etc/rsyncd.conf</code>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<code>#Global Settings </code>
<code>uid = nobody</code>
<code>gid = nobody</code>
<code>use chroot = no</code>
<code>max connections = 5</code>
<code>timeout = 600</code>
<code>pid </code><code>file</code> <code>= </code><code>/var/run/rsyncd</code><code>.pid</code>
<code>lockfile = </code><code>/var/run/rsyncd</code><code>.lock</code>
<code>log </code><code>file</code> <code>= </code><code>/var/log/rsyncd</code><code>.log</code>
<code>#module</code>
<code>[chandao]</code>
<code>path = </code><code>/opt/backup/</code>
<code>ignore errors = </code><code>yes</code>
<code>read</code> <code>only = no</code>
<code>write only = no</code>
<code>hosts allow = *</code>
<code>hosts deny = *</code>
<code>list = </code><code>yes</code>
<code>uid = root</code>
<code>gid = root</code>
<code>auth </code><code>users</code> <code>= dianyi</code>
<code>secrets </code><code>file</code> <code>= </code><code>/etc/chandao</code><code>.</code><code>passwd</code>
(3)配置rsync認證檔案/etc/chandao.passwd
<code>[root@chandao ~]</code><code>#echo “dianyi:dianyi” > /etc/chandao.passwd </code>
<code>[root@chandao ~]</code><code>#cat /etc/chandao.passwd</code>
<code>dianyi:dianyi</code>
(4)修改/etc/chandao.passwd的權限為600
<code>[root@chandao ~]</code><code>#chmod 600 /etc/chandao.passwd</code>
<code>[root@chandao ~]</code><code># ll /etc/chandao.passwd</code>
<code>-rw------- 1 root root 14 Jul 29 18:18 </code><code>/etc/chandao</code><code>.</code><code>passwd</code>
(5)配置服務啟動
<code>[root@chandao ~]</code><code># chkconfig rsync on</code>
<code>[root@chandao ~]</code><code># service xinetd start</code>
(6)檢查873端口是否成功監聽
<code>[root@chandao ~]</code><code># ss -antlp | grep 873</code>
(7)檢查rsync運作狀态
<code>[root@chandao ~]</code><code># chkconfig --list</code>
2、禅道資料庫伺服器(192.168.200.18)
<code>#Global Settings</code>
<code>[db_chandao]</code>
<code>secrets </code><code>file</code> <code>= </code><code>/etc/db_chandao</code><code>.</code><code>passwd</code>
(3)配置rsync認證檔案/etc/db_chandao.passwd
<code>[root@DBSlave ~]</code><code>#echo “dianyi:dianyi” > /etc/db_chandao.passwd</code>
<code>[root@DBSlave ~]</code><code>#cat /etc/db_chandao.passwd</code>
(4)修改/etc/db_chandao.passwd 的權限為600
<code>[root@DBSlave ~]</code><code>#chmod 600 /etc/db_chandao.passwd</code>
<code>[root@DBSlave ~]</code><code># ll /etc/db_chandao.passwd</code>
<code>-rw------- 1 root root 14 Jul 29 18:18 </code><code>/etc/db_chandao</code><code>.</code><code>passwd</code>
<code>[root@DBSlave ~]</code><code># chkconfig rsync on</code>
<code>[root@DBSlave ~]</code><code># service xinetd start</code>
<code>[root@DBSlave ~]</code><code># ss -antlp | grep 873</code>
<code>[root@DBSlave ~]</code><code># chkconfig --list</code>
三、部署rsync用戶端(192.168.1.186)
1、設定rsync用戶端的密碼檔案
(1)禅道的密碼檔案
<code>[root@backup ~]</code><code>#echo dianyi > /etc/chandao.passwd</code>
<code>[root@backup ~]</code><code># cat /etc/chandao.passwd</code>
<code>dianyi</code>
(2)禅道資料庫的密碼檔案
<code>[root@backup ~]</code><code>#echo dianyi > /etc/db_chandao.passwd</code>
<code>[root@backup ~]</code><code># cat /etc/db_chandao.passwd</code>
2、修改密碼檔案的的權限為600
<code>[root@backup ~]</code><code># chmod 600 /etc/chandao.passwd</code>
<code>[root@backup ~]</code><code># chmod 600 /etc/db_chandao.passwd</code>
<code>[root@backup ~]</code><code># ll /etc/chandao.passwd /etc/db_chandao.passwd</code>
<code>-rw------- 1 root root 7 Jul 29 17:17 </code><code>/etc/chandao</code><code>.</code><code>passwd</code>
<code>-rw------- 1 root root 7 Jul 29 16:19 </code><code>/etc/db_chandao</code><code>.</code><code>passwd</code>
3、測試rsync用戶端是否可以從rsync伺服器拉成功
<code>[root@backup ~]</code><code># rsync -vzrtopg --password-file=/etc/chandao.passwd [email protected]::chandao/* /tmp</code>
4、rsync同步腳本
24
25
26
27
28
29
30
31
32
33
34
35
<code>#!/bin/bash</code>
<code>#func:rsync for chandao</code>
<code>#Date:first write on 2014.7.29</code>
<code>#Version:v1.0</code>
<code>ntpdate 192.168.200.16 > </code><code>/dev/null</code> <code>2>&1</code>
<code>date</code><code>=`</code><code>date</code> <code>+%Y-%m-%d`</code>
<code>dest_chandao=</code><code>/opt/backup/chandao/zentao</code>
<code>dest_db=</code><code>/opt/backup/chandao/db_chandao</code>
<code>remote_chandao=192.168.200.16</code>
<code>remote_db=192.168.200.18</code>
<code>module_chandao=chandao</code>
<code>module_db=db_chandao</code>
<code>[email protected]</code>
<code>[email protected]</code>
<code>main(){</code>
<code> </code><code>rsync</code> <code>-vzrtopg --password-</code><code>file</code><code>=</code><code>/etc/chandao</code><code>.</code><code>passwd</code> <code>dianyi@$remote_chandao::$module_chandao/*$</code><code>date</code><code>* $dest_chandao</code>
<code> </code><code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>echo</code> <code>"chandao-*$date* was rsynced"</code> <code>>> </code><code>/opt/log/chandao_rsync</code><code>.log 2>&1;</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>"chandao-*$date* was not rsynced"</code> <code>>> </code><code>/opt/log/chandao_rsync</code><code>.log 2>&1;</code>
<code> </code><code>echo</code> <code>"Chandao rsync was faild "</code> <code>| mail -s </code><code>"chandao backup"</code> <code>$user2;</code>
<code> </code><code>fi</code>
<code> </code><code>rsync</code> <code>-vzrtopg --password-</code><code>file</code><code>=</code><code>/etc/db_chandao</code><code>.</code><code>passwd</code> <code>dianyi@$remote_db::$module_db/*$</code><code>date</code><code>* $dest_db</code>
<code> </code><code>echo</code> <code>"db_chandao_*$date* was rsynced"</code> <code>>> </code><code>/opt/log/chandao_rsync</code><code>.log 2>&1;</code>
<code> </code><code>echo</code> <code>"db_chandao_*$date* was not rsynced"</code> <code>>> </code><code>/opt/log/chandao_rsync</code><code>.log 2>&1;</code>
<code> </code><code>echo</code> <code>"db_chandao rsync was faild "</code> <code>| mail -s </code><code>"chandao backup"</code> <code>$user2;</code>
<code>}</code>
<code>main</code>
四、定時任務
<code>[root@backup ~]</code><code># crontab -e</code>
<code>##rsync for chandao</code>
<code>20 09 * * * </code><code>/bin/sh</code> <code>/opt/scripts/rs_chandao</code><code>.sh</code>
五、同步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 添加子產品
<code>use chroot = </code><code>false</code>
<code>strict modes = </code><code>false</code>
<code>log </code><code>file</code> <code>= rsyncd.log</code>
<code># Module definitions</code>
<code># Remember cygwin naming conventions : c:\work becomes /cygwin/c/work</code>
<code>#</code>
<code>[svn]</code>
<code>path = </code><code>/cygdrive/e/Repositories</code> <code>#e代表e盤</code>
<code>transfer logging = </code><code>yes</code>
<code>uid = 0 </code><code>#這裡的udi和gid不再是root或是nobody,而應該是0,如果不填會報會報:@ERROR: invalid uid nobody</code>
<code>gid = 0</code>
<code>secrets </code><code>file</code> <code>= etc</code><code>/svn</code><code>.</code><code>passwd</code>
(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)建立密碼認證檔案
<code>vim </code><code>/etc/svn</code><code>.</code><code>passwd</code>
(2)設定權限
<code>chmod</code> <code>600 </code><code>/etc/svn</code><code>.</code><code>passwd</code>
(3)測試
<code># rsync -vzrtopg --password-file=/etc/svn.passwd [email protected]::svn/* /opt/111/</code>
上面這個指令行中-vzrtopg裡的v是verbose,z是壓縮,r是recursive,topg都是保持檔案原有屬性如屬主、時間的參數
5、把指令添加到腳本
本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1532927,如需轉載請自行聯系原作者