Linux系統備份 恢復之Tar 一

2022-05-12 06:57:39 字數 2966 閱讀 2279

在備份和還原系統時,linux 基於檔案的性質成了乙個極大的優點。在 windows 系統中, 登錄檔與系統是常相關的。配置和軟體安裝不僅僅是將 檔案放到系統上。因此,還原系統就需要有能夠處理 windows這種特性的軟體。在 linux 中,情況就不一樣了。配置檔案是基於文字的,並且除 了直接處理硬體時以外,它們在很大程度上是與系統無關的。 硬體驅動程式的現代方法是,使它們以動態載入 的模組的形式可用,這樣核心就變 得更 加與系統無關。不同於讓備份必須處理作業系統如何安裝到系統和硬體上的複雜細節,linux 備份處理的是檔案的打包和解包。

一般情況下,以下這些目錄是需要備份的:

* /etc

包含所有核心配置檔案。這其中包括網路配置、系統名稱、防火牆規則、使用者、組,以及其他全域性系統項。

* /var

包含系統守護程序(服務)所使用的資訊,包括 dns 配置、dhcp 租期、郵件緩衝檔案、http 伺服器檔案、db2 例項配置,等等。

* /home

是根(root)使用者的主目錄。

* /opt

是安裝許多非系統檔案的地方。openoffice、jdk 和其他軟體在預設情況下也安裝在這裡。

有些目錄是應該考慮不備份的。

* /proc

應該永遠不要備份這個目錄。它不是乙個真實的檔案系統,而是執行核心和環境的虛擬化檢視。它包括諸如 /proc/kcore 這樣的檔案,這個檔案是整個執行記憶體的虛擬檢視。備份這些檔案只是在浪費資源。

* /dev

包含硬體裝置的檔案表示。如果計畫還原到乙個空白的系統,那就可以備份 /dev。然而,如果計畫還原到乙個已安裝的 linux 系統,那麼備份 /dev 是沒有必要的。

其他目錄包含系統檔案和已安裝的包。在伺服器環境中,這其中的許多資訊都不是自定義的。大多數自定義都發生在 /etc 和/home 目錄中。不過出於完整性的考慮,您可能希望備份它們。

在生產環境中,我希望確保資料不會丟失,因而我會備份除 /proc 目錄之外的整個系統。如果最擔心使用者和配置,我會僅備份 /etc、/var、/home 和 /root 目錄。

備份工具

正如前面提到過的, linux 備份在很大程度上就是打包和解包檔案。這允許使用現有的系統實用工具和指令碼來執行備份,而不必購買商業化的軟體包。在許多情況下,這類備份將是足夠的,並且為管理員提供了極大的控制能力。備份指令碼可以使用 cron 命令來自動化,這個命令控制 linux 中預定的事件。

tar

-c 開關表示歸檔檔案正在被建立。

-p 開關表示我們希望保留檔案許可許可權,這對良好的備份來說是很關鍵的。

-f 開關指向該歸檔檔案的檔名。在本例中,我們使用的是原始磁帶裝置 /dev/st0。

/ 表示我們想要備份的內容。既然我們想要備份整個系統,因此把這個開關指定為根(root)。當把 tar 指向乙個目錄(以 / 結尾)時,它會自動遞迴。最後,我們排除了 /proc 目錄,因為它沒有包含需要儲存的任何內容。

如果單盒磁帶容納不下這個備份,我們需要新增 -m 開關(本例中沒有顯示)以進行多卷備份。

要還原乙個或多個檔案,可以使用帶提取開關( -x )的 tar 命令:

tar -xpf /dev/st0 -c /

-f 開關同樣指向歸檔檔案

-p 開關表明我們想要還原歸檔的許可權

-x 開關表明從歸檔中提取檔案

-c / 表明我們想要讓還原從 / 開始。

tar 通常還原到執行這個命令的目錄。 -c 開關使我們的當前目錄不再相關。

您可能會經常使用的另外兩個 tar 命令是 -t 和 -d 開關。 -t 開關列出某個歸檔檔案的內容。 -d 開關將歸檔檔案的內容與系統上的當前檔案作比較。

為便於操作和編輯,您可以將想要歸檔的檔案和目錄放進乙個文字檔案中,然後在命令列通過 -t 開關引用這個文字檔案。這些檔案和目錄可以與命令列上列出的其他目錄結合起來。下面的命令列備份 myfiles檔案中列出的檔案或目錄,同時備份/ 根目錄和 /tmp 目錄中的所有 iso 檔案。

tar -cpf /dev/st0 -t myfiles  /root   /tmp/*.iso

myfiles檔案列表只是乙個文字檔案,其中列出檔案或目錄。下面是乙個例子:

/etc

/var

/home

/usr/local

/opt

請注意tar -t (或 files-from )命令不能接受萬用字元。檔案必須明確地列出。

上面的例子展示了一種單獨地引用檔案的方法。您還可以執行指令碼來搜尋系統,然後建立乙個列表。

下面就是這樣乙個指令碼的例子:

#!/bin/sh

cat myfiles > templist

find /usr/share -iname *.png >> templist

find /tmp -iname *.iso >> templist

tar -cpzmf /dev/st0 -t templist

上面的指令碼首先將 myfiles 中的所有現有檔案列表複製到 templist。

然後它執行兩個find 命令來搜尋檔案系統中匹配某個模式的檔案,並將它們附加到templist。第一次是搜尋 /usr/share 目錄樹中以 .png 結尾的所有檔案。第二次是搜尋 /tmp 目錄樹中以.iso 結尾的所有檔案。在建立好列表之後,tar然後在檔案裝置 /dev/st0 (第乙個 scsi 磁帶裝置)上建立乙個新的歸檔檔案,該檔案使用gzip 格式來壓縮,並保留所有檔案許可權。該歸檔檔案將跨越多個卷。要歸檔的檔案的名稱將從templist 檔案中提取。

還可以使用指令碼來執行更精細的操作,比如增量備份。

gerhard mourani 在他的 securing and optimizing linux 一書中給出了乙個優秀的指令碼

tar 備份與恢復

常見的壓縮格式及命令格式 gzip gz bzip2 bz2 xz xz tar 整合備份工具 c 建立歸檔 x 釋放歸檔 f 指定歸檔檔案名稱 z j j 呼叫.gz bz2 xz 格式的工具進行處理 t 顯示歸檔中的檔案清單 c 指定釋放的位置 打包 tar 選項 壓縮包名 被壓縮歸檔的原始檔 ...

利用tar備份linux系統詳解

備份windows系統需要用ghost,備份linux顯然要簡單的多,用tar命令就可以搞定。用tar備份的特點 1 保留許可權 2 適合備份整個目錄 3 可以選擇不同的壓縮方式 4 如果選擇不壓縮還能實現增量備份,部份還原,參考man tar 命令格式 tar cxtzjvfppn 壓縮文件的名稱...

Linux 系統的備份恢復

注意根目錄下要有充足的可用空間用於備份。cd tar.gz格式tar cvpzf system backup.tar.gz exclude proc exclude lost found exclude system backup.tar.gz exclude mnt exclude sys tar...