2016年1月7日 星期四

啟用rsync 進行程式碼備份

備份主機:(等待備份程式碼上傳的主機):

需安裝 rsync 與 xinted
yum install rsync xinetd

編輯 /etc/xinetd.d/rsync
將 disable = yes 改為 disable = no

重啟 xinetd
service xinetd restart

記得開啟防火牆 873 port

編輯設定檔
自行編輯 /etc/rsyncd.conf (如果沒有此檔案可自行產生)

 vi /etc/rsyncd.conf

#log存放位置
log file = /var/log/rsync.log
# 備份資料存放的位置,你也可以設很多不同的標籤識別 存放位置
[web]
path = /var/bkup/wwwbkup/
[web2]
path = /var/bkup/www2bkup/
[web3]
path = /var/bkup/www3bkup/

#允許以下IP 進行備份
hosts allow = 140.129.12.9 140.129.12.188 140.129.50.25
list = true
#執行的user id
uid = bkupuser
#因為目錄資料寫入的權限問題,我已先將bkupuser與root放入同一群組
gid = root
read only = false


本地端:
安裝rsync
yum install rsync

編輯密碼檔案
我放在 /root/rsync.passwd, 裡面紀錄的是備份主機的bkupuser用戶的密碼,
假設bkupuser的密碼是 au4a83x06jo4 

記得該檔案讀寫權限要設為600
chmod 600 /root/rsync.passwd

利用crontab 來 定期執行

crontab -e

#網頁rsync差異備份
35 1 * * 1-5 /usr/bin/rsync -avzHSP --delete --password-file=/root/rsync.passwd /var/www/html/ttucis bkupuser@備份主機IP::web
45 1 * * 1-5 /usr/bin/rsync -avzHSP --delete --password-file=/root/rsync.passwd /var/www/html/apply bkupuser@備份主機IP::web2
55 1 * * 1-5 /usr/bin/rsync -avzHSP --delete --password-file=/root/rsync.passwd /var/www/html/applymgm bkupuser@備份主機IP::web3
58 1 * * 1-5 /usr/bin/rsync -avzHSP --delete --password-file=/root/rsync.passwd /var/www/html/photo bkupuser@備份主機IP::web3
注意!! 
請注意備份路徑「/var/www/html/ttucis」的後面有沒有多一個「/」的結果會差很多,有「/」的話那同步過去的會是整個 /var/www/html/ttucis 的內容 (/var/www/html/ttucis/*),沒有「/」的話會在目標路徑建立一個 html 目錄,目錄下才是 /var/www/html/ttucis 的內容。

相關參數參考:(來源網址:http://www.vixual.net/blog/archives/186)

  • -a--archive: 這最常被使用的參數,相當於同時使用 -rlptgoD,即: *
    • -r: 子目錄遞迴
    • -l: 複製符號連結
    • -p: 複製檔案權限
    • -t: 複製時間屬性
    • -g: 複製群組屬性
    • -o: 複製擁有者屬性
    • -D: 複製裝置屬性
  • -v--verbose: 顯示詳細資訊 *
  • -z--compress: 壓縮傳輸的資料,以減少傳輸量 *
  • -R--relative: 備份後,使用本地端完整的路徑 (不加此參數,則為相對路徑)
  • -H--hard-links: 保留檔案的連結 *
  • -S--sparse: 使有比較有效率的方式處理零散的檔案 *
  • -P: 等同加了 --partial --progress,即: *
    • --partial: 保留傳輸中斷的檔案以進行續傳
    • --progress: 即時顯示檔案傳輸的進度
  • --delete: 本地端如果刪掉檔案,則備份伺服器也同時刪除該檔案,以保持兩邊檔案的一致 *
  • --password-file: 密碼檔的位置 (如不輸入此參數,則程式執行時會詢問你) *