使用tar或者afio對linux系統進行備份

2021-08-24 21:53:36 字數 3535 閱讀 1589

摘自:

參考:linux的系統備份一直是從windows轉到linux的使用者關心的問題。由於眾所周知的原因,有經驗的windows使用者都養成了用ghost等軟 件備份windows系統的「優良傳統」,結果這個優良傳統也被移植到了linux下。其實ghost用來備份linux也是很不錯的,它的壓縮功能能夠 省下不少的硬碟空間,這點對於硬碟緊張的使用者來說的確是相當好用的。不過它也有自己的缺點,那就是必須在dos下使用,如果只是想要解出某部分檔案,就只 能用windows版的ghost解壓出來……,種種因素使得用ghost用來備份linux成為了一件痛苦的事情。

實際上,linux自帶的tar和afio就可以很好的完成這個工作,而且使用起來也相當方便,最明顯的一點就是,不用為了備份系統而重啟計算機。好,言歸正傳。

1、使用tar進行簡單的備份和恢復

1.1備份

tat命令能夠將存檔資料寫到檔案、磁帶或者原始磁帶裝置之中。tar命令的典型語法如下所示:

tar -[ c | x | t ] [ -pv ] -f device path1 path2 ...

tar 需要帶乙個引數命令,通常c表示建立(create),x表示解壓所(extract),t表示測試(test)。選項p指示tar在解壓縮時保留原始文 件的所有權和許可權。選項v指示tar列出詳細操作過程。f選項以及後面的引數指定tar寫到給定的裝置。所有path1,path2等等引數是要新增到存 檔中的目錄樹或者檔案。

例如,要將/usr目錄樹寫到$home/backup/usrbak.tar中,可以使用如下命令:

tar -cf $home/backup/usrbak.tar /usr

如果想要將/usr目錄樹寫到/dev/st0的磁帶裝置中,可以使用如下命令:

tar -cf /dev/st0 /usr

現在聰明的網友應該已經想到了,想要備份整個linux檔案系統的命令是這樣:

tar -cf /dev/st0 /

乍看起來的確是這樣的,但是,這個命令卻實現不了你的意圖。首先,這個命令也會備份/proc目錄。根據你的核心版本,它將在你的備份中增加數百兆你不需要的核心執行期資料,甚至會引起tar中斷或者分段錯誤(segmentation fault)。

其次,備份根目錄/也會備份/mnt目錄,其中會包含裝載的cd-rom資料以及任何裝載的網路檔案系統甚至於裝載的windows分割槽(這是好事,也可能是壞事,取決於你要做什麼)。

要備份除了/proc和/mnt之外的根目錄,使用下面的命令:

[copy to clipboard]

[ - ]

code:

tar -cf /dev/st0 $(ls / | grep -v -e proc -e mnt)

這個命令將備份除了/proc和/mnt之外的根目錄。

1.2恢復

建立了乙個tar存檔檔案之後,通常要將每個檔名前面的斜線「/」刪除掉。這意味著當恢復檔案時,它們將被恢復到tar執行的相對工作目錄中去。例如,要將/dev/st0中的磁帶恢復到它們的原始路徑中,使用下列命令:

cd /: tar -xpf /dev/st0

在恢復過程中可以指定附加的路徑。這些路徑表示列表中的檔案被打包後恢復的路徑。允許使用萬用字元。例如要將/dev/st0磁帶中的/usr/x11r6和/usr/local目錄樹恢復到它們的原始路徑,命令如下:

cd /;tar -xpf /dev/st0 'usr/x11r6/*/' 'usr/local/*'

還可以用tee命令將處理的的檔案列表在終端顯示,並同時將檔案列表寫到乙個檔案中,命令如下:

cd /;tar -xpf /dev/st0 'usr/x11r6/*/' 'usr/local/*' | tee /var/log/restored.files

有關使用tar進行更加複雜操作的資訊,例如多卷,增量備份和恢復等,可以參看tar的manual

注意:1、在這裡一直沒有提及tar的z,j選項。tar -cz(j)確實能夠建立壓縮tar的歸檔檔案,不過這兩個壓縮都是基於資料流的。也就是說如果資料儲存在磁帶上,而磁帶發生錯誤的機率是很高的,如果遇 到乙個無法恢復的位錯誤,你將不僅失去這個檔案,整個磁帶也就毀了。

所以,最好只在錯誤率低的介質,如硬碟上使用z,j選項。這個問題與基於硬體壓縮的磁帶裝置無關,對於這種裝置是無須使用軟體壓縮的。當然對於大部分網友來說都可以加上z,j選項,畢竟大部分人都沒有私人的磁帶機。

2、文中的示範命令列都是以/dev/st0為備份裝置的,如果是要備份到檔案,只要將該引數改為檔案的路徑即可,如$home/backup/sysbak.tar

2、使用afio進行簡單的備份和恢復

afio命令與tar命令類似,而且afio的存檔能夠與支援cpio(詳細資訊可以man cpio)命令的系統共同操作,afio支援對單個檔案的壓縮,更適合於利用沒有硬體壓縮功能的磁帶進行壓縮備份。

可能你的發行版本沒有afio軟體包,你可以從獲取afio的源**。

因為afio將檔案列表存檔為標準輸入流,所以afio的作為存檔工具的基本語法包含兩個命令:

find path1 path2 ...[-opts] || afio -[i|o|t] [-vz]device

-i命令用來恢復(input from)磁帶或者存檔,-o命令(output to)用來寫入磁帶或者存檔,-t命令用來測試磁帶或者存檔。-v選項對處理檔案進行列表,-z選項在檔案寫入磁帶之前用gzip進行壓縮。

2.1備份

通常使用find命令來提供afio要處理的檔案列表,可以利用find的特殊功能和afio構造乙個更專業更靈活的檔案存檔計畫。

最簡單的方式,例如要將/usr目錄樹寫到磁帶裝置/dev/st0中,使用下列命令:

find /usr | afio -o /dev/st0

要進行同樣的存檔操作,但是將每個檔案在寫到磁帶之前進行壓縮,使用下列命令:

find /usr | afio -o -z /dev/st0

2.2恢復

要將存檔恢復到根目錄,可使用-i命令代替-o命令:

cd /;afio -i /dev/st0

要恢復壓縮的文件,需記住要包含-z選項:

cd /;afio -i -z /dev/st0

afio的詳細操作與tar命令的詳細操作相同。例如,要在恢復存檔的同時在終端上顯示處理的檔案列表,並將列表儲存到/var/log目錄的乙個檔案中,命令如下:

afio -i -z -v /dev/st0 | tee /var/log/restored.files

有關使用afio進行更加複雜操作的資訊。可以參見afio的手冊。

備註:

tar和afio用於備份linux已經可以工作得很好,但是可能有些使用者還是不習慣使用命令列工具,或者某些使用者需要更複雜的,網路功能更強的工具,這是tar或者afio所不能提供的。

實際上也有不少商用的linux備份方案。比如:

arkeia

bru(backup and restore utility)

二者都提供了gui介面,而且有很好的網路功能以及一些特性,具體可以參看官網的介紹。當然還有很多的備份軟體,不過這兩者是比較著名的linux備份方案。

但是它們兩都是商業軟體,要想要使用就得掏錢買,否則只能使用它們的試用版了。

使用tar或者afio對linux系統進行備份

tar需要帶乙個引數命令,通常c表示建立 create x表示解壓所 extract t表示測試 test 選項p指示tar在解壓縮時保留原始檔案的所有權和許可權。選項v指示tar列出詳細操作過程。f選項以及後面的引數指定tar寫到給定的裝置。所有path1,path2等等引數是要新增到存檔中的目錄...

使用SQL語句對Access資料庫進行備份

說明 1.要備份的資料庫 medicine.mdb 有下列幾個表單 enter表 exit表 store表 2.備份的資料庫 bumedicine.mdb 放在當前路經的dbbackup子目錄中。3.使用sql中的select.into.in語句,對medicine.mdb進行追加查詢,生 成與me...

linux中,如何使用tar進行解壓縮

linux中,如何使用tar進行解壓縮 環境 windows 7 virtualboax fedora 15 kde 可以使用tar命令解壓縮.tar.gz檔案,下面以解壓縮qt原始檔舉例 1.在windows中將qt原始檔拷貝到共享資料夾下 2.在fedora 15中,進入到共享檔案下,共享檔案會...