天天看點

rsync 遠端同步 linux 及 windows 主機

一、前言

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” &gt; /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” &gt; /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 &gt; /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 &gt; /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 &gt; </code><code>/dev/null</code> <code>2&gt;&amp;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>&gt;&gt;  </code><code>/opt/log/chandao_rsync</code><code>.log 2&gt;&amp;1;</code>

<code>     </code><code>else</code>

<code>         </code><code>echo</code> <code>"chandao-*$date* was not rsynced"</code> <code>&gt;&gt;  </code><code>/opt/log/chandao_rsync</code><code>.log 2&gt;&amp;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>&gt;&gt;  </code><code>/opt/log/chandao_rsync</code><code>.log 2&gt;&amp;1;</code>

<code>         </code><code>echo</code> <code>"db_chandao_*$date* was not rsynced"</code> <code>&gt;&gt;  </code><code>/opt/log/chandao_rsync</code><code>.log 2&gt;&amp;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服務

       運作 --&gt; services.msc --&gt; RsyncServer 啟動類型:自動

(4)檢視873端口是否監聽成功

       運作 --&gt; cmd --&gt; 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,如需轉載請自行聯系原作者

繼續閱讀