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