天天看點

教你在Linux中如何歸檔和備份

保護系統的資料安全是計算機系統管理的重中之重,解決方法就是通過實時備份系統檔案,來保護資料,也就是常說的資料容災備份。在這篇文章中,我們将會描述幾個常用來管理檔案集合的指令程式,即檔案壓縮程式和歸檔程式,進而掌握在linux系統中如何歸檔和備份資料。

壓縮檔案

• gzip –壓縮或者展開檔案

• bzip2 –塊排序檔案壓縮器

資料壓縮的原理就是一個删除備援資料的處理過程。壓縮算法或任務主要分為兩大類,即無損壓縮和有損壓縮。無損壓縮的目标是在實作壓縮的基礎上,保留原始檔案的所有資料。而有損壓縮呢,在執行壓縮操作的過程中會删除一些資料,進而實作更大的壓縮目标。有損壓縮的執行個體有JPEG(圖像)檔案和MP3(音頻)檔案。我們主要描述完全無損壓縮,原因是計算機中的大多數資料是不能允許丢失任何資料的。

Gzip指令

gzip 指令支援壓縮一個或着多個檔案。當執行gzip 指令時,那麼原始檔案的壓縮版會替代原始檔案。相對應的gunzip 指令将壓縮檔案複原為沒有被壓縮的版本。

執行個體如下:

[[email protected] ~]$ ls -l /etc > test.txt

[[email protected] ~]$ ls -l foo.*

-rw-r--r-- 1 centos centos 15738 2008-10-14 07:15 test.txt

[[email protected] ~]$ gzip test.txt

[[email protected] ~]$ ls -l foo.*

-rw-r--r-- 1 centos centos 3230 2008-10-14 07:15 test.txt.gz

[[email protected] ~]$ gunzip test.txt.gz

[[email protected] ~]$ ls -l foo.*

-rw-r--r-- 1 centos centos 15738 2008-10-14 07:15 test.txt

首先,我們建立了一個名為test.txt 的文本檔案。其次,我們運作gzip 指令,将原始檔案替換為一個叫做test.txt.gz 的壓縮檔案。在foo.* 檔案清單中,檢視得出原始檔案已被壓縮檔案替代,大小約為原始檔案的五分之一,權限和時間戳相同。

最後,我們運作gunzip 程式來解壓縮檔案。随後,壓縮檔案解壓縮後得到的檔案,其大小、權限和時間戳都無變化,實作了無損壓縮。

bzip2指令

與gzip 指令相似,差別是使用不同的壓縮算法,舍棄了壓縮速度,進而實作更高的壓縮級别;由bzip2 壓縮的檔案,用擴充名.bz2來表示。在大多數情況下,它的工作模式及方式等同于gzip指令。

bunzip2 和bzcat 指令用來解壓縮檔案。

bzip2指令也帶有bzip2recover 程式,其會試圖恢複受損的.bz2檔案。

執行個體如下:

[[email protected] ~]$ ls -l /etc > test.txt

[[email protected] ~]$ ls -l test.txt

-rw-r--r-- 1 centos centos 15738 2008-10-17 13:51 test.txt

[[email protected] ~]$ bzip2 test.txt

[[email protected] ~]$ ls -l test.txt.bz2

-rw-r--r-- 1 centos centos 2792 2008-10-17 13:51 test.txt.bz2

[[email protected] ~]$ bunzip2 test.txt.bz2

歸檔檔案

• tar –打封包件工具

• zip –打包和壓縮檔案

與檔案壓縮互相結合的檔案管理任務是歸檔。歸檔就是收集多個檔案,并将它們捆綁成一個大檔案的過程。歸檔經常作為系統備份的組成部分來使用。當将一些舊的資料從一個系統遷移到某種類型的長期儲存設備中時,也會用到歸檔程式。

tar

tar 指令可以說是用來歸檔檔案的經典工具。其檔案的擴充名為.tar 或者.tgz,它們各自所表達的含義是“普通”的tar 包和被gzip 程式壓縮過的tar 包。一個tar 包可以由一組獨立的檔案,一個或者多個目錄,或者兩者混合體組成。

指令文法如下:

tar mode[options] pathname...

mode 是指以下操作模式之一:

模式說明

c 為檔案和/或目錄清單建立歸檔檔案。

x 抽取歸檔檔案。

r 追加具體的路徑到歸檔檔案的末尾。

t 列出歸檔檔案的内容。

[[email protected] ~]$ tar xf ../txt.tar

[[email protected] ~]$ ls

txt

通過檢視/foo/playground 目錄中的内容,這個歸檔檔案已被建立,同時也建立了一個原始檔案副本。

注意:從歸檔檔案中抽取的檔案和目錄的所有權由執行此複原操作的使用者所擁有,不屬于原始所有者。

zip

zip 指令既是一個壓縮工具,同時也是一個打包工具。在Linux 中gzip 是主要的壓縮指令程式,而uzip是主要的解壓縮指令程式。

zip/unzip 指令程式可以完成一些大家平常的一些基本操作,它們兩個都有許多選項參數,進而增加了運用靈活性。zip 和unzip 指令的說明手冊也都相當不錯,并且包含了許多執行個體。值得注意的是,這些程式的主要用途是為了和Windows 系統交換檔案,而不是在Linux 系統中執行壓縮和打包操作,tar 和gzip 程式在Linux 系統中更常用。

在這裡讨論的所有指令的手冊文檔都講解的清清楚楚明明白白,且附上有用的執行個體。我們需要熟練掌握它們。在編寫這篇文章過程中我還參考了《Linux就該這麼學》這本書,内容很貼近實踐,很有理論指導實踐價值的一本書籍。