rsync實現Linux服務器數據同步

     在日常工作經常需要對服務器的數據進行備份,如異地備,必須通過網絡將數據傳輸到遠程服務器端做備份。對於這類事務,如果單純通過手工去操作的話,不僅效率低,而且會很煩鎖。雖然很多商業類備份軟件可以提供解決方法,但是它們高昂的價格卻不是每個企業都可以承受的。幸好,Linux本身就有很多優秀的開源方案,rsync就是在這方面很出色的開源軟件,它的功能強大,能很好的處理這類需求。

     rysnc是一款數據文件同步工具,在文件傳輸方面,它有着很多優點。它能夠對整個目錄樹和文件系統進行更新,它使用“rsync算法”來檢測文件之間所做的更改,採取增量方式同步文件,從而提高了文件傳輸的效率。同時,在傳輸中還可以保持原有文件的權限、屬主和時間等屬性不變。在安全方面,rsync可使用ssh方式來傳輸,從而保證了傳輸過程數據的安全。
    下面介紹一下rsync的安裝使用,操作環境如下:服務器A爲rsync服務器,服務器B配置爲rsync客戶端,我們通過rsync使A的文件同步到B服務器上做爲備份。            

 服務器A設置:

1. 安裝rsync。rsync主頁爲http://rsync.samba.org ,可在這裏下載最新源碼包進行安裝,目前的版本爲rsync-3.0.9.tar.gz。 

tar -zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make instal

2.創建rsync 同步目錄/data,此目錄裏面的內容將同步到遠程服務器上。 
mkdir /data

3.創建密碼文件,此文件用於存放rsync同步時使用的帳號密碼,格式爲“用戶名:密碼”,該用戶是與操作系統分離的,系統上不需要創建此用戶。rsync的密碼文件可使用任意名稱。
vi /etc/rsyncd.pass  
alex:123456

密碼文件權限需修改爲600,
chmod 600 /etc/rsyncd.pass


4.創建 rsync 配置文件/etc/rsync.conf,默認是沒有這個文件的,需要手工創建。rsync的配置文件使用模塊化結構,包含全局參數和模塊參數,全局參數是通用的配置。每個模塊代表着一個目錄樹的同步,模塊定義從[]中的模塊名開始,到下一個模塊定義開始。
rsync.conf配置如下:
--------------------------------------------------------------------------------------
 uid=root      #該選項指定當該模塊傳輸文件時守護進程應該具有的uid,
              配合gid選項使用可以確定rsync具有訪問那些文件夾的              
              權限,默認值是"nobody",我們可以根據相應的需要進行配置。
gid=root     #該選項指定當該模塊傳輸文件時守護進程應該具有的gid,
              默認值是”nobody”。
use chroot=no                     #不使用chroot
max connections=20                #設置最大連接數,默認爲0,即無限制。這裏設置爲20.
strict mode =yes                  #設置是否檢查口令文件的權限
pid file=/var/run/rsyncd.pid      #指定rysnc進程的pid文件位置 
lock file=/var/lock/rsync.lock    #指定支持max connections的鎖文件
log file=/var/log/rsyncd.log      #指定 rsync日誌輸出路徑

[model1]                            #模塊名,可使用任意名稱
path=/data/                        #源目錄路徑
comment=Test rsync                 #模塊描述
ignore errors                      #出現I/O錯誤時可忽略。
read only=no                       #是否只讀,設置爲no時客戶端可上傳文件。
write only=no                      #設置爲no 時客戶端可下載文件。
hosts allow=192.168.0.20           #允許訪問主機
hosts deny=*                       #拒絕訪問的主機,*表示所有主機。
list=false                         #設置客戶端請求時是否列出該模塊,false爲隱藏。                 
auth users=alex                    #設置連接時使用的用戶,即密碼文件裏面定義的用戶名。
secrets file=/etc/rsyncd.pass      #指定密碼文件位置 
----------------------------------------------------

5.啓動rsync守護進程
/usr/local/bin/rsync --daemon

rsync的默認端口爲873,通過命令netstat –lnpt可以查看是否已正常啓動。 

到這一步rysnc服務器上的配置就已經完成了,我們在目錄/data中創建兩個文件 123.txt和 abc.log,用來做同步的測試,下面我們可以到服務器B上去驗證一下。

服務器B 配置
1. 安裝rsync。
2. 配置密碼文件,裏面寫入與服務器A上相同的密碼,但不需要再寫帳號名。
vi /etc/rsyncd.pass
123456
3. 創建備份的文件夾
mkdir /backup

4. 同步操作,使用如下命令從服務器A下載文件。
/usr/local/bin/rsync –vzrtopg –delete --progress --exclude “*.log”  [email protected]::model1 /backup  --password-file=/etc/rsyncd.pass

該命令的解釋如下:
-v即--verbose   顯示傳輸的詳細信息
-z 即--compress 傳輸時對文件進行壓縮
-r 即—recursive 對子目錄進行遞歸處理
-t 即—times    保持文件的時間信息
-o即—owner  用來保持文件的屬主信息
-p 即 --perms 保持文件權限
g 即 –group 保持文件屬組信息
--delete  以rsync服務器爲基準保持數據同步,如果服務器刪除了某一文件,客戶端也會刪掉。
--progress 顯示出詳細的進度情況。
--exclude 用於排除不需要的文件類型。
[email protected]::model1   指定備份的服務器和相關的模塊, alex 爲服務器A上面設置的
                            rsync同步帳號,得注意服務器IP與模塊名之間爲雙冒號“::”。  

/backup 指定備份的文件在客戶端上的存放位置 。
--password-file=/etc/rsyncd.pass 指定客戶端存放密碼文件的位置。

現在,我們可以查看備份目錄/backup,看到已經與A服務器上的/date完成了同步,同時排除了我們不想要同步的文件。

5.如果我們需要定時同步,如一小時同步一次,只需把該命令加到計劃任務即可。

* 1 * * *  /usr/local/bin/rsync –vzrtopg –delete --progress --exclude “*.log”  [email protected]::model1 /backup  --password-file=/etc/rsyncd.pass

 至此,rsync的同步設置完成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章