對(duì)于Linux磁帶機(jī)的簡(jiǎn)單操作
自從Linux開(kāi)發(fā)出來(lái),隨著十多年的發(fā)展,Linux越來(lái)越普及,很多程序員都在研究Linux,Linux磁帶機(jī)的方式有多種,主要有通過(guò)Amanda、Tar等軟件進(jìn)行操作。下面介紹一下Linux磁帶機(jī)知識(shí)。
Amanda是提供了遠(yuǎn)程集中備份的功能,通過(guò)分別設(shè)置客戶端、服務(wù)器端,實(shí)現(xiàn)遠(yuǎn)程集中存儲(chǔ)備份。而Tar主要用于單機(jī)環(huán)境下,將數(shù)據(jù)直接寫(xiě)入磁帶的備份。針對(duì)單一節(jié)點(diǎn)的備份,只要簡(jiǎn)單的使用Tar命令進(jìn)行備份、恢復(fù)即可。
安裝
對(duì)于目前廠家的HP DAT24/40系列外置SCSI磁帶機(jī),都帶有自動(dòng)回卷功能。將其接在外置SCSI的總線上,并重新啟動(dòng)服務(wù)器。重新引導(dǎo)后,執(zhí)行dmesg將可以看到新的磁帶機(jī)設(shè)備叫/dev/st0。
- blk: queue ef0d7a14, I/O limit 4095Mb (mask 0xffffffff)
- audit subsystem ver 0.1 initialized
- (scsi0:A:3): 10.000MB/s transfers (10.000MHz, offset 15)
- Vendor: HP Model: C1537A Rev: L805
- Type: Sequential-Access ANSI SCSI revision: 02
- blk: queue ef0e4614, I/O limit 4095Mb (mask 0xffffffff)
- Attached scsi tape st0 at scsi0, channel 0, id 3, lun 0
磁帶操作
裝入磁帶后,可執(zhí)行如下操作:
倒帶,將磁帶卷至起始位置
mt -f /dev/st0 rewind
擦除,擦掉磁帶上的內(nèi)容
mt -f /dev/st0 erase
注意:擦除工作非常慢,并且對(duì)磁帶有損傷,***不要執(zhí)行,當(dāng)數(shù)據(jù)寫(xiě)滿后,可以繼續(xù)寫(xiě)入數(shù)據(jù)并覆蓋原有數(shù)據(jù),無(wú)須執(zhí)行擦除動(dòng)作。新磁帶打開(kāi)封裝后立刻可以使用,不需要執(zhí)行擦除。
出帶,將磁帶卷至初始位置然后從磁帶機(jī)內(nèi)彈出
mt –f /dev/st0 offline
數(shù)據(jù)操作
基本操作如下:
1. 列目錄操作tar tvf /dev/st0
假如磁帶上沒(méi)有任何文件,則列目錄會(huì)報(bào)錯(cuò),這個(gè)錯(cuò)誤沒(méi)有關(guān)系,不影響磁帶的使用。
- [root@dev131 /root]# tar tvf /dev/st0
- tar: /dev/st0: Cannot read: Input/output error
- tar: At beginning of tape, quitting now
- tar: Error is not recoverable: exiting now
- [root@dev131 /root]#
2. 寫(xiě)入數(shù)據(jù)操作tar cvf /dev/st0 <要寫(xiě)入的文件名>
寫(xiě)入數(shù)據(jù)的方法有兩種:不打包直接寫(xiě)入文件和打包壓縮后寫(xiě)入文件。二者各有優(yōu)缺點(diǎn)。不打包直接寫(xiě)入文件的方法,看起來(lái)效率低,操作復(fù)雜,但是可 以提高數(shù)據(jù)的生存率。磁帶是一種線性存儲(chǔ)的設(shè)備,所有數(shù)據(jù)緊挨著順序?qū)懭搿.?dāng)磁帶的某一點(diǎn)損壞的時(shí)候,其余位置的磁帶還可以繼續(xù)讀取,其中的文件也都能讀 出。如果采用了打包壓縮后寫(xiě)入的方法,則磁帶上存儲(chǔ)的只有一個(gè)文件。當(dāng)磁帶有任何一個(gè)地方發(fā)生了故障無(wú)法讀取,則這個(gè)壓縮文件將缺少一些細(xì)節(jié),即使是一個(gè) bit的錯(cuò)誤,也將導(dǎo)致壓縮文件報(bào)告CRC錯(cuò)誤無(wú)法解壓。所以,如果是存儲(chǔ)大量的數(shù)據(jù),建議直接寫(xiě)入。如果是存取小文件,則***打包并給文件名加時(shí)間標(biāo)記 寫(xiě)入。
例如要將/root/test1.tar.gz寫(xiě)入到磁帶并覆蓋磁帶的內(nèi)容:
tar cvf /dev/st0 test1.tar.gz
磁帶機(jī)的傳輸速度比較慢,對(duì)于不是很大的文件備份,稍等幾秒,寫(xiě)入即可完成。使用參數(shù)cvf將覆蓋此帶上的已有文件。
隨后列出磁帶上的文件:
- [root@dev131 /root]# tar tvf /dev/st0
- -rw-r--r-- root/root 320 2006-12-01 09:29:02
- test1.tar.gz
- [root@dev131 /root]#
可看到數(shù)據(jù)寫(xiě)入成功。
注意:這個(gè)命令只能在磁帶是全新的時(shí)候?qū)懭耄诘诙螆?zhí)行的時(shí)候,就會(huì)覆蓋掉磁帶上原來(lái)的數(shù)據(jù)。另外,使用tar命令備份,要求備份文件體積必 須小于單盤(pán)磁帶的容量,即一個(gè)文件不能跨越兩盤(pán)磁帶。如果遇到這種情況,則不能使用tar命令備份,需要換其他備份程序進(jìn)行操作。
3. 繼續(xù)寫(xiě)入數(shù)據(jù)tar rvf /dev/st0 <要寫(xiě)入的文件名>
磁帶存儲(chǔ)是線性存儲(chǔ),所有數(shù)據(jù)是依次寫(xiě)入的。為了不覆蓋前邊的內(nèi)容,在寫(xiě)入時(shí)候,要使用rvf參數(shù)寫(xiě)入內(nèi)容。
tar rvf /dev/st0 test2.tar.gz
再執(zhí)行一次rvf繼續(xù)寫(xiě)入其他的文件:
tar rvf /dev/st0 test3.tar.gz
寫(xiě)入完成后,查看磁帶上有哪些文件:
- [root@dev131 /root]# tar tvf /dev/st0
- -rw-r--r-- root/root 320 2006-12-01 09:29:02
- test1.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:44:19
- test2.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:30:14
- test3.tar.gz
- [root@dev131 /root]#
可以看到,新寫(xiě)入的文件和原文件都存儲(chǔ)在了磁帶上。
磁帶的線性存儲(chǔ)特性,使得磁帶上可以寫(xiě)入兩次相同的文件。例如現(xiàn)在test3文件發(fā)生了文件大小的變化,再次寫(xiě)入到磁帶:
tar rvf /dev/st0 test3.tar.gz
查看文件列表,可以看到磁帶上有如下文件:
- [root@dev131 /root]# tar tvf /dev/st0
- -rw-r--r-- root/root 320 2006-12-01 09:29:02
- test1.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:30:14
- test2.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:44:19
- test3.tar.gz
- -rw-r--r-- root/root 67085 2006-12-01 09:44:19
- test3.tar.gz
- [root@dev131 /root]#
這里可看到,磁帶上有兩個(gè)文件同名的文件寫(xiě)入。這個(gè)文件的兩次備份大小和時(shí)間可以相同,也可以不相同。
注意:在磁帶上如果相同文件寫(xiě)入了多次,在恢復(fù)時(shí)候會(huì)比較麻煩,需要先將磁帶卷至文件所存儲(chǔ)的地方,而后讀取磁帶當(dāng)前位置所存儲(chǔ)的文件,操作較 為復(fù)雜,速度也比較慢。所以不建議在一盤(pán)磁帶上寫(xiě)入相同文件名的文件。備份前,***將備份文件的文件名上加上時(shí)間標(biāo)記,便于查找備份。例如要備份的文件名 是test- 20061201-0930.tar.gz和test-20061201-0945.tar.gz,則寫(xiě)入到一盤(pán)磁帶上。如此在執(zhí)行備份和恢復(fù)操作時(shí)候, 能夠更加便利快捷的進(jìn)行存取操作。
4. 讀取數(shù)據(jù)tar xvf /dev/st0 <要讀取的文件名>
讀取數(shù)據(jù)前,首先查看磁帶上的內(nèi)容,獲取要恢復(fù)的文件名。例如查看后得到如下結(jié)果:
- [root@dev131 /root]# tar tvf /dev/st0
- -rw-r--r-- root/root 320 2006-12-01 09:29:02
- test1.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:30:14
- test2.tar.gz
- -rw-r--r-- root/root 320 2006-12-01 09:44:19
- test3.tar.gz
- [root@dev131 /root]#
現(xiàn)在恢復(fù)其中的test3.tar.gz文件,執(zhí)行如下命令:
tar xvf /dev/st0 test3.tar.gz
讀取數(shù)據(jù)后。
- [root@dev131 ~]# tar xvf /dev/st0 test3.tar.gz
- test3.tar.gz
- [root@dev131 ~]#
隨后可以在當(dāng)前的路徑下找到從磁帶中讀取出來(lái)的文件:
- [root@dev131 ~]# ls -l test3.tar.gz
- -rw-r--r-- 1 root root 320 Dec 1 11:12
- test3.tar.gz
- [root@dev131 ~]#
至此恢復(fù)操作完成。
通過(guò)上文所介紹的tar命令,使用tvf/cvf/rvf/xvf參數(shù),即可實(shí)現(xiàn)對(duì)磁帶的讀取、寫(xiě)入操作。使用預(yù)先寫(xiě)好的復(fù)制數(shù)據(jù)腳本,配合上磁帶機(jī)操作命令,并且放置到/etc/crontab中,即可實(shí)現(xiàn)自動(dòng)備份。希望通過(guò)本文你能夠?qū)W會(huì)Linux磁帶機(jī)知識(shí)。
【編輯推薦】