本節所講內容:html
服務端: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
首先認識同步數據的方式:
推: 一臺主機負責把數據傳給其它主機。服務器開銷大。適合後端服務器比較少
拉: 全部主機定時去找一主機拉數據 。 可能會致使數據同步緩慢。好處,節省服務器開銷。
方法二:
實戰:使用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
測試:
建立文件測試
數據已經實時同步。