歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

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

linux的系統備份一直是從 windows 轉到linux的用戶關心的問題。由於眾所周知的原因,有經驗的windows 用戶都養成了用ghost等軟件備份windows 系統的“優良傳統”,結果這個優良傳統也被移植到了linux下。其實ghost用來備份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 -[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所不能提供的。

Copyright © Linux教程網 All Rights Reserved