使用者工具

網站工具


tech:rsnapshot

rsnapshot 安裝與使用方式

  • 使用 perl 撰寫呼叫 rsync, ssh, diff, du.. 的一個同步備份檔案工具程式
  • 目前版本 1.3.1

安裝方式

  • 如果已經有安裝 rpmforge 可以直接下
    yum install rsnapshot

備份方式

  • 範例一:
    • 每四小時備份以下目錄資料到 /data1500G/backup/.snapshots 內
      • /pd920/wd1t/web-data/ localhost/
    • 編輯 /etc/rsnapshot.conf
      :
      snapshot_root   /data1500G/backup/.snapshots/
      :
      cmd_ssh /usr/bin/ssh
      :
      cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff
      :
      #########################################
      #           BACKUP INTERVALS            #
      # Must be unique and in ascending order #
      # i.e. hourly, daily, weekly, etc.      #
      #########################################
      
      interval        hourly  6
      interval        daily   7
      interval        weekly  4
      #interval       monthly 3
      :
      logfile /var/log/rsnapshot
      :
      ###############################
      ### BACKUP POINTS / SCRIPTS ###
      ###############################
      
      # LOCALHOST
      backup /pd920/wd1t/web-data/    localhost/
      #backup /home/          localhost/
      #backup /etc/           localhost/
      #backup /usr/local/     localhost/
      :
  1. 參數檔內的參數間必須是 tab 隔開, 如果輸入空白格就會出現錯誤
  2. interval hourly 6 表示要保留 6 分差異備份, 如果在 /etc/crontab 內設定每兩小時執行一次 hourly, 2*6=12 那就保留 12 小時前的差異資料, 若要保留 24 小時前的資料, 要改成 12 (2*12=24)這樣才會有 12 次的備份資料
  • 測試設定
    rsnapshot hourly &
    rsnapshot du
  • 設定到 /etc/crontab 內
    :
    15 */4 * * * root /usr/bin/rsnapshot hourly
    :
  • 範例二:
  • 每天備份本地目錄與遠端目錄資料到 /data/backup/.snapshots 內(保留最近三天的差異資料)
    • 本地目錄 : /pd920/wd1t/xen/ → localhost/
    • 遠端目錄 : [email protected]:/samba_bak/ → nw1/
  • 過濾不需同步 /samba_bak/data/temp/ 目錄底下所有資料
  • 複製 /etc/rsnapshot.conf 成 /etc/rsnapshot_day.conf
    cp -a /etc/rsnapshot.conf /etc/rsnapshot_day.conf
  • 編輯 /etc/rsnapshot_day.conf
    :
    snapshot_root   /data/backup/.snapshots/
    :
    :
    #########################################
    #           BACKUP INTERVALS            #
    # Must be unique and in ascending order #
    # i.e. hourly, daily, weekly, etc.      #
    #########################################
    
    interval        hourly  3
    interval        daily   7
    interval        weekly  4
    #interval       monthly 3
    :
    logfile /var/log/rsnapshot_daily
    :
    lockfile        /var/run/rsnapshot_daily.pid
    :
    exclude /samba_bak/data/temp/
    :
    ###############################
    ### BACKUP POINTS / SCRIPTS ###
    ###############################
    
    # LOCALHOST
    backup /pd920/wd1t/xen/    localhost/
    backup  [email protected]:/samba_bak/     nw1/
    :
  • 測試設定
    rsnapshot -c /etc/rsnapshot_day.conf hourly &
    rsnapshot -c /etc/rsnapshot_day.conf du
  • 設定到 /etc/crontab 內
    :
    15 0 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot_daily.conf hourly
    :
  • daily 參數的使用是搬移 hourly 的最後一份, 所以必須要先有 hourly 才能有 daily
  • hourly 最小值是 2 , 最少要有兩份.. hourly.0 hourly.1 不能只有一份 hourly.0
  • 這樣可以在
    • /data1500G/backup/.snapshots/hourly.0/localhost/ 內出現 pd920/wd1t/web-data/
    • /data/backup/.snapshots/hourly.0/localhost/ 內出現 pd920/wd1t/xen/

設定備份完成通知

  • 主要是透過 utils/rsnapreport.pl 產生這次備份統計結果來通知
  • 先將 rsnapreport.pl 連結到 /usr/bin 目錄下
    ln -s /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/bin/rsnapreport.pl
    chmod a+x /usr/bin/rsnapreport.pl
  • 更改 /etc/rsnapshot.conf 內的設定
    :
    verbose         4
    :
    rsync_long_args --stats
    :
  • 更改 /etc/crontab 內的啟動方式
    :
    # rsnapshot
    12 */2 * * * root /usr/bin/rsnapshot hourly 2>&1 | /usr/bin/rsnapreport.pl | mail -s"rsnapshot Sync Report" [email protected]
    :

分享最新備份目錄

  • 透過權限設定與目錄掛載方式分享給需要讀取備份者使用
  • Exp. 有個帳號 backup 可以看到最新的備份目錄
  1. 設定原本備份目錄其他用戶可讀取權限 Exp. /data2000/backup/.snapshots/
    chmod 0755 /data2000/backup/.snapshots/
  2. 設定 nfs 提供出分享目錄 Exp. /data2000/backup/.snapshots/hourly.0/nw1/samba
    vi /etc/exports
    ----
    :
    /data2000/backup/.snapshots/hourly.0/nw1/samba  127.0.0.1(ro,no_root_squash)
    ----
    service nfs restart
  3. 設定 backup 可讀取這最新備份目錄 Exp. /home/backup/nw1_samba 看到 nfs 分享目錄
    vi /etc/fstab
    ----
    :
    localhost:/data2000/backup/.snapshots/hourly.0/nw1/samba        /home/backup/nw1_samba  nfs     ro      0 0
    ----
    mount /home/backup/nw1_samba
  4. 登入 backup 身份存取最新備份目錄的檔案

還原方式

  • 可直接將 .snapshots 內特定的備份版本透過 cp -a 的方式複製到還原目錄即可
  • 以範例一的 12 小時前的備份版本 /data1500G/backup/.snapshots/hourly.2/localhost/pd920/wd1t/web-data/ 要還原到 /data/web-data 就可以直接下
    cp -a /data1500G/backup/.snapshots/hourly.2/localhost/pd920/wd1t/web-data/ /data/

參考說明

tech/rsnapshot.txt · 上一次變更: 2014/04/11 15:56 由 jonathan