配置rsync+inotify實現實時同步

本節所講內容:html

  • rsync 遠程同步
  • 實戰1: 備份/var/www/html 目錄
  • 實戰2: 使用ssh密鑰實現無交互備份
  • 實戰3:配置rsync+inotify實現實時同步
  • 實驗環境:

服務端:xuegod63.cn   IP:192.168.10.63mysql

客戶端:xuegod64.cn   IP:192.168.10.64web

 

rsync 遠程同步: 一款快速增量備份工具 Remote Sync,遠程同步 支持本地複製,或者與其餘SSH、rsync主機同步。sql

 做用:作數據備份windows

備份方式:後端

       徹底備份安全

     增量備份bash

 

 

rsync客戶端 好處:服務器

優勢:   第一次同步時 rsync 會複製所有內容,但在下一次只傳輸修改過的文件。支持增量備份。dom

         選擇性的保持 : 符號連接,硬連接,文件屬性,權限 及時間 等。

              傳輸前執行壓縮。適用於異地備份 ,鏡像服務器等應用 。

              安全,使用ssh作爲傳輸端口。 sftp  ,ssh 

官網:http://rsync.samba.org

 

首先認識同步數據的方式:

    推:  一臺主機負責把數據傳給其它主機。服務器開銷大。適合後端服務器比較少

    拉:  全部主機定時去找一主機拉數據 。 可能會致使數據同步緩慢。好處,節省服務器開銷。

 

方法二:

 

實戰:使用rsync進行數據同步

rsync命令的基本用法:

格式:rsync 【選項】 源文件 目標文件

 

常見的選項:

-a,--archive(存檔) 歸檔模式,表示以遞歸的方式傳輸文件,而且保持文件屬性,等同於加了參數-rlptgoD

-r,–recursive 對子目錄以遞歸模式處理

-l,--links 表示拷貝連接文件

-p , --perms 表示保持文件原有權限

-t , --times 表示保持文件原有時間

-g , --group 表示保持文件原有屬用戶組

-o , --owner 表示保持文件原有屬主

-D , --devices 表示塊設備文件信息

-z , --compress 表示壓縮傳輸

-H 表示硬鏈接文件

-A 保留ACL屬性信息

-P 顯示傳輸進度

--delete 刪除那些目標位置有而原始位置沒有的文件

 

 

實戰1: 備份xuegod63的/var/www/html 目錄到xuegod64的/web-back。

                                       

開始備份:

xuegod63: 建立用於測試的數據

[root@xuegod63 ~]# cp -r /boot/grub/ /var/www/html/

備份xuegod63的/var/www/html 目錄到xuegod64的/web-back

注:rsync是基於ssh協議。須要知道對端服務器的root和密碼

[root@xuegod63 ~]# rsync -azP --delete /var/www/html/  root@192.168.1.64:/web-back

 

 

常見的選項:

-a,--archive(存檔) 歸檔模式,表示以遞歸的方式傳輸文件,而且保持文件屬性,等同於加了參數-rlptgoD

-z , --compress 表示壓縮傳輸

-P 顯示傳輸進度

--delete 刪除那些目標位置有而原始位置沒有的文件

 

你打算幾點備份?

24點,不行。  業務最不忙的時候。  

3:00   人都休息。    找一我的最少的時間去備份。  不是24:00.

天天晚上3點起來備份???

 

實戰2: 使用ssh密鑰實現無交互備份。作成腳本,將xuegod63上的數據,按期備份到xuegod64上。

在xuegod63上生成密鑰對

[root@xuegod63 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): #直接回庫

Enter passphrase (empty for no passphrase):

Enter same passphrase again:  #直接回庫

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:   #直接回庫

ac:64:7f:6c:54:41:a1:80:4a:ab:79:9a:6d:d1:ef:e0 root@xuegod63.cn

The key's randomart image is: 

+--[ RSA 2048]----+

|       ..  .+.   |

|    . .  . . .   |

|   . o    . .    |

|    o  .   .     |

|   o .o S .      |

|  o oo.o o       |

|   = .o.. +      |

|  o o. ..o       |

|   .  E..        |

+-----------------+

 

查看生成的公鑰和私鑰:

[root@xuegod63 ~]# ls /root/.ssh/

id_rsa(私鑰)  id_rsa.pub(公鑰)  known_hosts

 

 

將公鑰上傳到xuegod64 數據源

 

[root@xuegod63 ~]# ssh-copy-id root@192.168.1.64

root@192.168.1.64's password:

Now try logging into the machine, with "ssh 'root@192.168.1.64'", and check in:

 

  .ssh/authorized_keys

 

to make sure we haven't added extra keys that you weren't expecting.

 

至關於你執行了:

[root@xuegod63 ~]# scp /root/.ssh/id_rsa.pub   root@192.168.1.64:/root/.ssh/authorized_keys

查看:

[root@xuegod64 ~]# ls /root/.ssh/

authorized_keys  known_hosts

 

測試,不輸密碼直接登陸:

 [root@xuegod63 ~]# ssh root@192.168.1.64

[rget1@xuegod64 ~]# exit

 

測試,不輸密碼直接備份:

[root@xuegod64 ~]# rm -rf /web-back/*

[root@xuegod63 ~]# rsync -azP --delete /var/www/html/  root@192.168.1.64:/web-back

 

 

登陸順序: 服務器A想直接登陸B, 把A的公鑰上傳到B上。

擴展:          

快速查找歷史命令:

ctrl+R -》 輸入歷史命令的關鍵字-》按下右方向鍵

總結:

1、在xuegod63上生成密鑰對

2、將公鑰上傳到xuegod64 數據源

3、執行備份命令 rsync 實現無交互備份

 

實戰:配置rsync+inotify實現實時同步

把xuegod63.cn服務器上的/var/www/html目錄時實同步到xuegod64.cn主機上的/web-back目錄中。

inotify概述:

Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各類變化狀況,如文件存取、刪除、移動等。利用這一機制,能夠很是方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時做出響應。

修改windows註冊表,安裝一些有危險性的軟件。 這時,系統或安全衛士會彈出如下窗口:

 

 

使用rsync工具與inotify機制相結合,能夠實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則當即啓動增量備份操做,不然處於靜態等侍狀態,這樣一來,就避免了按固定週期備份進存在的延遲性、週期過密等問題。

 

 

查看是否支持inotify,從kernel 2.6.13開始正式併入內核。

[root@xuegod63 ~]# uname -r

2.6.32-220.el6.x86_64

 

安裝inotify-tools-3.13.tar:

上傳

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

rz  上傳

sz  下載

 

安裝inotify-tools-3.13.tar:

 

[root@xuegod63 ~]# tar -zxvf inotify-tools-3.13.tar.gz

[root@xuegod63 ~]# cd inotify-tools-3.13

[root@xuegod63 inotify-tools-3.13]# ./configure   檢查安裝環境

[root@xuegod63 inotify-tools-3.13]# make -j 4   #make編譯,將源代碼編譯成二進制,可執行的文件  

源碼編譯mysql或內核: make -j 4   快。

 

[root@xuegod63 inotify-tools-3.13]# make  install  # 安裝

[root@xuegod63 ~]# inotifywait -h  

經常使用參數:

-e  用來指定要監控哪些事件。

這些事件包括: create建立,move移動,delete刪除,modify修改文件內容,attrib屬性更改。

-m 表示持續監控

-r  表示遞歸整個目錄

-q 表示簡化輸出信息。

[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

 

在另外一個終端登陸,在/var/www/html目錄進行相關的操做,而後,回到原來的終端查看監控變化狀況。

[root@xuegod63 ~]# echo aaa > /var/www/html/a.html

[root@xuegod63 ~]# mkdir /var/www/html/test

[root@xuegod63 ~]# cp /etc/passwd /var/www/html/test/

[root@xuegod63 ~]# rm -rf /var/www/html/test/passwd

 

查看變化:

[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

/var/www/html/ CREATE a.html

/var/www/html/ MODIFY a.html

/var/www/html/ CREATE,ISDIR test

/var/www/html/test/ CREATE passwd

/var/www/html/test/ MODIFY passwd

/var/www/html/test/ DELETE passwd

注:使用inotifywait輸出的監控結果中,每行記錄中依次包括目錄、事件、文件。據此能夠識別變更狀況。

 

編寫觸發式同步腳本

思路: 只要使用inotifywait檢測到事件時,自動執行rsync進行同步操做便可。

[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

/var/www/html/   CREATE   a.html

 

[root@xuegod63 ~]# cat a.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /var/www/html/  | while read a b c

do      

rsync -azP --delete /var/www/html/ root@192.168.10.64:/web-back

done

[root@xuegod63 ~]# chmod +x a.sh

 [root@xuegod63 ~]# ./a.sh

測試:

建立文件測試

數據已經實時同步。

相關文章
相關標籤/搜索