Linux tar incremental Backup / Restore

Incremental Backup 增量備份

tar 需要一個 Snapshot(快照)文件來對照新舊檔案差異
  • 備份實例基礎資料
備份目標位置: /etc
備份儲存位置: /var/backup

備份快照文件: etc.snar
Day 1 備份儲存文件: etc.1.tar
Day 2 備份儲存文件: etc.2.tar 
Day 3 備份儲存文件: etc.3.tar  
  • 第一天執行備份,建立 /var/backup/etc.snar 快照文件
# tar -cvf /var/backup/etc.1.tar /etc -g /var/backup/etc.snar
  • 第二天執行備份,會根據/var/backup/etc.snar的快照文件與 /etc的差異準行備份
# tar -cvf /var/backup/etc.2.tar /etc -g /var/backup/etc.snar 
  • 第三天執行備份,會根據上一次的快照文件最後備份結果與 /etc的差異準行備份
# tar -cvf /var/backup/etc.3.tar /etc -g /var/backup/etc.snar  

Incremental Backup 總結

經過三天的備份,我們應該會得到以下文件

# cd /var/backup
# ls -l
 total 10324
 -rw-r--r-- 1 root root 9687040 Feb 13 19:26 etc.1.tar
 -rw-r--r-- 1 root root  389120 Feb 14 19:26 etc.2.tar
 -rw-r--r-- 1 root root  430080 Feb 15 19:42 etc.3.tar
 -rw-r--r-- 1 root root   63331 Feb 15 19:42 etc.snar

第一天的 etc.1.tar 為 full Backup檔
第二天的 etc.2.tar 為 Day 2 的 Incremental Backup檔
第三天的 etc.3.tar 為 Day 3 的 Incremental Backup檔
注意:etc.snar文檔不可以刪除,否則就不能夠進行之後的 Incremental Backup

Restore 恢復

在Restore過程中,無需要使用快照文件,但必須要由第一天開始順序提取
  • Restore實例基礎資料
etc.1.tar: full Backup檔
etc.2.tar: Day 2 的 Incremental Backup檔
etc.3.tar: Day 3 的 Incremental Backup檔
恢複的資料存放在 /home/foo

e.g.
# cd /var/backup
# ls -l
 total 10324
 -rw-r--r-- 1 root root 9687040 Feb 13 19:26 etc.1.tar
 -rw-r--r-- 1 root root  389120 Feb 14 19:26 etc.2.tar
 -rw-r--r-- 1 root root  430080 Feb 15 19:42 etc.3.tar
 -rw-r--r-- 1 root root   63331 Feb 15 19:42 etc.snar
# 
  • 實例恢復 Day2 的資料步驟
# tar -C /home/foo -xvf etc.1.tar -g /dev/null
# tar -C /home/foo -xvf etc.2.tar -g /dev/null 
  • 檢查恢複結果
# cd /home/foo
# ls -l
total 4
 drwxr-xr-x 125 root root 4096 Feb 16 13:16 etc
#

Restore 總結

# tar -C /home/foo -xvf etc.1.tar -g /dev/null 

使用 -g /dev/null 的目的,會根據記錄自動刪除已改變的檔案。
若不使用 -g /dev/null,tar不會協助您刪除已取消的檔案。