星期二, 11月 09, 2010

使用tar指令及磁帶機做差異備份或增量備份

磁帶機裝置名稱依系統和使用的磁帶不同有可能是: /dev/st0、/dev/rst0、/dev/rft0/、/dev/sa0等不同名稱。
如果有一個以上的磁帶裝置會依序命名為st1、st2等。
開頭加上n ( nst、nsa ) 的裝置代表操作完不捲回,差異或增量備份使用這種模式可以省去換磁帶的麻煩又可以充份利用磁帶容量。

常用磁帶操作指令
mt -f /dev/st0 status 目前磁帶狀態
mt -f /dev/st0 rewind 磁帶捲回開頭
mt -f /dev/st0 offline 磁帶捲回開頭並退出磁帶
mt -f /dev/st0 erase 清空磁帶
mt -f /dev/nst0 fsf 1 往前一個檔案 (數字1可以改為其它數值)
mt -f /dev/nst0 bsf 1 往後一個檔案
mt -f /dev/nst0 asf n 捲回開頭再往前n個檔案(n為數值)
mt -f /dev/nst0 eom 磁帶資料末尾

備份作業
1月1日
全備份 tar -cf /dev/nst0 /datas

2月1日
差異或增量備份 tar -cf /dev/nst0 -N "20xx-01-01" /datas

3月1日
增量備份 tar -cf /dev/nst0 -N "20xx-02-01" /datas
差異備份 tar -cf /dev/nst0 -N "20xx-01-01" /datas

4月1日
增量備份 tar -cf /dev/nst0 -N "20xx-03-01" /datas
差異備份 tar -cf /dev/nst0 -N "20xx-01-01" /datas

注意tar的 -N 選項會包含當天(每個月的1日),所以每個月1日的檔案會重復備份避免遺漏

增量備份還原
mt -f /dev/st0 rewind
tar -xvf /dev/nst0
tar -xvf /dev/nst0
tar -xvf /dev/nst0
tar -xvf /dev/nst0
持續還原全部備份

差異備份還原(只要還原第一個和最後一個備份檔)
mt -f /dev/st0 rewind
tar -xvf /dev/nst0
mt -f /dev/nst0 eom
mt -f /dev/nst0 bof 1
tar -xvf /dev/nst0

使用限制
目錄更名,依檔案更新日期的增量備份還原後會將新舊檔案放在不同目錄。
檔案更名,不會備份到新檔案名稱。
如果有目錄或檔案更名可以使用touch指令更新檔案時間。
也可以考慮使用 -g ( --listed-incremental ) 參數
備份
tar -cvf /dev/nst0 -g tar-data.snar /data
tar -cvf /dev/nst0 -g tar-data.snar /data
tar -cvf /dev/nst0 -g tar-data.snar /data
還原
mt -f /dev/st0 rewind
tar -xvf /dev/nst0 -g /dev/null
tar -xvf /dev/nst0 -g /dev/null
tar -xvf /dev/nst0 -g /dev/null
還原時 -g 參數不需參考snar檔,可以隨便給一個值。
還原時有-g參數,tar指令會刪除備份時不存在系統中的檔案。