1.磁帶設(shè)備名
2.管理磁帶驅(qū)動器的基本命令
3.基本的備份和恢復(fù)命令
為什么備份?
一個備份計(jì)劃對定期備份文件來說很有必要吃既,如果你寧愿選擇不備份拒秘,那么丟失重要數(shù)據(jù)的風(fēng)險(xiǎn)會大大增加号显。有了備份,你就有了從磁盤故障中恢復(fù)的能力躺酒。備份還可以幫助你抵御:意外的文件刪除/文件或文件系統(tǒng)損壞/服務(wù)器完全毀壞押蚤,包括由于火災(zāi)或其他問題導(dǎo)致的同盤備份毀壞、硬盤或 SSD 崩潰阴颖、病毒或勒索軟件破壞或刪除文件、你可以使用磁帶歸檔備份整個服務(wù)器并將其離線存儲丐膝。
理解磁帶文件標(biāo)記和塊大小
每個磁帶設(shè)備能存儲多個備份文件量愧。磁帶備份文件通過 cpio,tar帅矗,dd 等命令創(chuàng)建偎肃。同時,磁帶設(shè)備可以由多種程序打開浑此、寫入數(shù)據(jù)累颂、及關(guān)閉。你可以存儲若干備份(磁帶文件)到一個物理磁帶上凛俱。在每個磁帶文件之間有個“磁帶文件標(biāo)記”紊馏。這用來指示一個物理磁帶上磁帶文件的結(jié)尾以及另一個文件的開始。你需要使用 mt 命令來定位磁帶(快進(jìn)蒲犬,倒帶和標(biāo)記)朱监。
磁帶上的數(shù)據(jù)是如何存儲的
所有的數(shù)據(jù)使用 tar 以連續(xù)磁帶存儲格式連續(xù)地存儲。第一個磁帶歸檔會從磁帶的物理開始端開始存儲(tar #0)原叮。接下來的就是 tar #1赫编,以此類推。
Unix 上的磁帶設(shè)備名
/dev/rmt/0 或 /dev/rmt/1 或 /dev/rmt/[0-127] :Unix 上的常規(guī)磁帶設(shè)備名奋隶。磁帶自動倒回擂送。
/dev/rmt/0n :以無倒回為特征,換言之唯欣,磁帶使用之后嘹吨,停留在當(dāng)前狀態(tài)等待下個命令。
/dev/rmt/0b :使用磁帶接口境氢,也就是 BSD 的行為躺苦。各種類型的操作系統(tǒng)比如 AIX身腻,Windows,Linux匹厘,F(xiàn)reeBSD 等的行為更有可讀性嘀趟。
/dev/rmt/0l :設(shè)置密度為低。
/dev/rmt/0m :設(shè)置密度為中愈诚。
/dev/rmt/0u :設(shè)置密度為高她按。
/dev/rmt/0c :設(shè)置密度為壓縮。
/dev/st[0-9] :Linux 特定 SCSI 磁帶設(shè)備名炕柔。
/dev/sa[0-9] :FreeBSD 特定 SCSI 磁帶設(shè)備名酌泰。
/dev/esa0 :FreeBSD 特定 SCSI 磁帶設(shè)備名,在關(guān)閉時彈出(如果可以的話)匕累。
磁帶設(shè)備名示例
/dev/rmt/1cn 指明正在使用 unity 1陵刹,壓縮密度,無倒回欢嘿。
/dev/rmt/0hb 指明正在使用 unity 0衰琐,高密度,BSD 行為炼蹦。
Linux 上的自動倒回 SCSI 磁帶設(shè)備名:/dev/st0
Linux 上的無倒回 SCSI 磁帶設(shè)備名:/dev/nst0
FreeBSD 上的自動倒回 SCSI 磁帶設(shè)備名:/dev/sa0
FreeBSD 上的無倒回 SCSI 磁帶設(shè)備名:/dev/nsa0
如何列出已安裝的 scsi 磁帶設(shè)備羡宙?
輸入下列命令:
### Linux(更多信息參閱 man) ###
lsscsi
lsscsi -g
### IBM AIX ###
lsdev -Cc tape
lsdev -Cc adsm
lscfg -vl rmt*
### Solaris Unix ###
cfgadm –a
cfgadm -al
luxadm probe
iostat -En
### HP-UX Unix ###
ioscan Cf
ioscan -funC tape
ioscan -fnC tape
ioscan -kfC tape
mt 命令示例
在 Linux 和類 Unix 系統(tǒng)上,mt 命令用來控制磁帶驅(qū)動器的操作掐隐,比如查看狀態(tài)或查找磁帶上的文件或?qū)懭氪艓Э刂茦?biāo)記狗热。下列大多數(shù)命令需要作為 root 用戶執(zhí)行。語法如下:
mt -f /tape/device/name operation
設(shè)置環(huán)境
你可以設(shè)置 TAPE shell 變量虑省。這是磁帶驅(qū)動器的路徑名匿刮。在 FreeBSD 上默認(rèn)的(如果變量沒有設(shè)置,而不是 null)是 /dev/nsa0探颈∑Х伲可以通過 mt 命令的 -f 參數(shù)傳遞變量覆蓋它,就像下面解釋的那樣膝擂。
### 添加到你的 shell 配置文件 ###
TAPE=/dev/st1 #Linux
TAPE=/dev/rmt/2 #Unix
TAPE=/dev/nsa3 #FreeBSD
export TAPE
1:顯示磁帶/驅(qū)動器狀態(tài)
mt status? ### Use default
mt -f /dev/rmt/0? status ### Unix
mt -f /dev/st0 status ### Linux
mt -f /dev/nsa0 status ### FreeBSD
mt -f /dev/rmt/1 status ### Unix unity 1 也就是 tape device no. 1
你可以像下面一樣使用 shell 循環(huán)語句遍歷一個系統(tǒng)并定位其所有的磁帶驅(qū)動器:
for d in 0 1 2 3 4 5
do
mt -f "/dev/rmt/$jf37p7v" status
done
2:倒帶
mt rew
mt rewind
mt -f /dev/mt/0 rewind
mt -f /dev/st0 rewind
3:彈出磁帶
mt off
mt offline
mt eject
mt -f /dev/mt/0 off
mt -f /dev/st0 eject
4:擦除磁帶(倒帶虑啤,在支持的情況下卸載磁帶)
mt erase
mt -f /dev/st0 erase? #Linux
mt -f /dev/rmt/0 erase #Unix
5:張緊磁帶盒
如果磁帶在讀取時發(fā)生錯誤,你重新張緊磁帶架馋,清潔磁帶驅(qū)動器狞山,像下面這樣再試一次:
mt retension
mt -f /dev/rmt/1 retension #Unix
mt -f /dev/st0 retension #Linux
6:在磁帶當(dāng)前位置寫入 EOF 標(biāo)記
mt eof
mt weof
mt -f /dev/st0 eof
7:將磁帶前進(jìn)指定的文件標(biāo)記數(shù)目,即跳過指定個 EOF 標(biāo)記
磁帶定位在下一個文件的第一個塊叉寂,即磁帶會定位在下一區(qū)域的第一個塊(見圖01):
mt fsf
mt -f /dev/rmt/0 fsf
mt -f /dev/rmt/1 fsf 1 #go 1 forward file/tape (see fig.01)
8:將磁帶后退指定的文件標(biāo)記數(shù)目萍启,即倒帶指定個 EOF 標(biāo)記
磁帶定位在下一個文件的第一個塊,即磁帶會定位在 EOF 標(biāo)記之后(見圖01):
mt bsf
mt -f /dev/rmt/1 bsf
mt -f /dev/rmt/1 bsf 1 #go 1 backward file/tape (see fig.01)
這里是磁帶定位命令列表:
fsf? ? 前進(jìn)指定的文件標(biāo)記數(shù)目。磁帶定位在下一個文件的第一塊勘纯。
fsfm? 前進(jìn)指定的文件標(biāo)記數(shù)目局服。磁帶定位在前一文件的最后一塊。
bsf? ? 后退指定的文件標(biāo)記數(shù)目驳遵。磁帶定位在前一文件的最后一塊淫奔。
bsfm? 后退指定的文件標(biāo)記數(shù)目。磁帶定位在下一個文件的第一塊堤结。
asf? ? 磁帶定位在指定文件標(biāo)記數(shù)目的開始位置唆迁。定位通過先倒帶,再前進(jìn)指定的文件標(biāo)記數(shù)目來實(shí)現(xiàn)竞穷。
fsr? ? 前進(jìn)指定的記錄數(shù)唐责。
bsr? ? 后退指定的記錄數(shù)。
fss? ? (SCSI tapes)前進(jìn)指定的 setmarks瘾带。
bss? ? (SCSI tapes)后退指定的 setmarks鼠哥。
基本備份命令
讓我們來看看備份和恢復(fù)命令。
9:備份目錄(tar 格式)
tar cvf /dev/rmt/0n /etc
tar cvf /dev/st0 /etc
10:恢復(fù)目錄(tar 格式)
tar xvf /dev/rmt/0n -C /path/to/restore
tar xvf /dev/st0 -C /tmp
11:列出或檢查磁帶內(nèi)容(tar 格式)
mt -f /dev/st0 rewind; dd if=/dev/st0 of=-
### tar 格式 ###
tar tvf {DEVICE} {Directory-FileName}
tar tvf /dev/st0
tar tvf /dev/st0 desktop
tar tvf /dev/rmt/0 foo > list.txt
12:使用 dump 或 ufsdump 備份分區(qū)
### Unix 備份 c0t0d0s2 分區(qū) ###
ufsdump 0uf /dev/rmt/0? /dev/rdsk/c0t0d0s2
### Linux 備份 /home 分區(qū) ###
dump 0uf /dev/nst0 /dev/sda5
dump 0uf /dev/nst0 /home
### FreeBSD 備份 /usr 分區(qū) ###
dump -0aL -b64 -f /dev/nsa0 /usr
13:使用 ufsrestore 或 restore 恢復(fù)分區(qū)
### Unix ###
ufsrestore xf /dev/rmt/0
### Unix 交互式恢復(fù) ###
ufsrestore if /dev/rmt/0
### Linux ###
restore rf /dev/nst0
### 從磁帶媒介上的第6個備份交互式恢復(fù) ###
restore isf 6 /dev/nst0
### FreeBSD 恢復(fù) ufsdump 格式 ###
restore -i -f /dev/nsa0
14:從磁帶開頭開始寫入(見圖02)
### 這會覆蓋磁帶上的所有數(shù)據(jù) ###
mt -f /dev/st1 rewind
### 備份 home ###
tar cvf /dev/st1 /home
### 離線并卸載磁帶 ###
mt -f /dev/st0 offline
從磁帶開頭開始恢復(fù):
mt -f /dev/st0 rewind
tar xvf /dev/st0
mt -f /dev/st0 offline
15:從最后一個 tar 后開始寫入(見圖02)
### 這會保留之前寫入的數(shù)據(jù) ###
mt -f /dev/st1 eom
### 備份 home ###
tar cvf /dev/st1 /home
### 卸載 ###
mt -f /dev/st0 offline
16:從 tar number 2 后開始寫入(見圖02)
### 在 tar number 2 之后寫入(應(yīng)該是 2+1)###
mt -f /dev/st0 asf 3
tar cvf /dev/st0 /usr
### asf 等效于 fsf ###
mt -f /dev/sf0 rewind
mt -f /dev/st0 fsf 2
從 tar number 2 恢復(fù) tar:
mt -f /dev/st0 asf 3
tar xvf /dev/st0
mt -f /dev/st0 offline
關(guān)于第三方備份工具
Linux 和類Unix系統(tǒng)都提供了許多第三方工具看政,可以用來安排備份朴恳,包括磁帶備份在內(nèi),如:
Amanda
Bacula
rsync
duplicity
rsnapshot