歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 使用tar或者afio對linux系統進行備份

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

日期:2017/2/27 9:31:40   编辑:更多Linux
  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之外的根目錄,使用下面的命令:   代碼:   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軟件包,你可以從http://scdbackup.webframe.org/afio-2.4.6.tgz獲取afio的源代碼。     因為afio將文件列表存檔為標准輸入流,所以afio的作為存檔工具的基本語法包含兩個命令:     代碼:   find path1 path2 ...[-opts] afio -[iot] [-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所不能提供的。




Copyright © Linux教程網 All Rights Reserved