Lunix文件的壓縮打包與備份

1 壓縮原理與優勢

1.1 壓縮原理

爲了要滿足目前我們的操作系統數據的存取,所以就會將該數據轉爲 byte 的型態來記錄,而本身計算機是以二進制運行的。假設一個字節當中, 1 會在最右邊佔據 1 個 bit ,而其他的 7 個 bits 將會自動的被填上 0 !但其實那 7 個 bits 應該是『空的』纔對!一些聰明的計算機工程師就利用一些複雜的計算方式, 將這些沒有使用到的『丟』出來,以讓文件佔用的空間變小!這就是壓縮的技術!

另外一種壓縮技術也很有趣,他是將重複的數據進行統計記錄的。舉例來說,如果你的數據爲『111....』共有 100 個 1 時, 那麼壓縮技術會記錄爲『100 個 1』而不是真的有 100 個 1 的位存在!這樣也能夠精簡文件記錄的容量! 

1.2 優勢

經過『壓縮』與『解壓縮』,文件容量變小, 你的硬盤容量無形之中就可以容納更多的資料。此外,在一些網絡數據的傳輸中,也會由於數據量的降低, 好讓網絡帶寬可以用來作更多的工作。

2 Lunix系統常見的壓縮指令

2.1 gzip, zcat/zmore/zless/zgrep

gzip 可以說是應用度最廣的壓縮指令了!目前 gzip 可以解開 compress, zip 與 gzip 等軟件所壓縮的文件。 它所建立的壓縮文件爲 *.gz 的檔名。

gzip [options] 文件名

選項與參數:

-c :將壓縮的數據輸出到屏幕上,可透過數據流重導向來處理;

-d :解壓縮的參數;

-t :可以用來檢驗一個壓縮文件的一致性~看看文件有無錯誤;

-v :可以顯示出原文件/壓縮文件案的壓縮比等信息;

# :# 爲數字的意思,代表壓縮等級1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是-6

注意:當你使用 gzip 進行壓縮時,在預設的狀態下原本的文件會被壓縮成爲 .gz 的檔名,源文件就不再存
在了。 

示例:將test1.txt以最佳的壓縮比壓縮,並保留原來的文件

2.2 bzip2, bzcat/bzmore/bzless/bzgrep

若說 gzip 是爲了取代 compress 並提供更好的壓縮比而成立的,那麼 bzip2 則是爲了取代 gzip 並提供更佳的壓縮比而來的。bzip2 的用法幾乎與 gzip 相同。 bzip2 的壓縮率確實比gzip 要好!不過,對於大容量文件來說,bzip2 壓縮時間會花更久的時間。

bzip [options] 文件名

選項與參數:

-c :將壓縮的過程產生的數據輸出到屏幕上!

-d :解壓縮的參數

-k :保留源文件,而不會刪除原始的文件喔!

-z :壓縮的參數 (默認值,可以不加)

-v :可以顯示出原文件/壓縮文件案的壓縮比等信息;

-# :與 gzip 同樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快!

2.3  xz, xzcat/xzmore/xzless/xzgrep

雖然 bzip2 已經具有很棒的壓縮比,不過顯然某些自由軟件開發者還不滿足,因此後來還推出了 xz 這個壓縮比更高的軟件!這個軟件的用法也跟 gzip/bzip2 幾乎一模一樣!

xz [options] 文件名

選項與參數:

-d :就是解壓縮啊!

-t :測試壓縮文件的完整性,看有沒有錯誤

-l :列出壓縮文件的相關信息

-k :保留原本的文件不刪除~

-c :同樣的,就是將數據由屏幕上輸出的意思!

-# :同樣的,也有較佳的壓縮比的意思!

3 打包指令 tar

tar [options] 文件名

選項與參數:

-c :建立打包文件,可搭配 -v 來察看過程中被打包的檔名(filename)

-t :察看打包文件的內容含有哪些檔名,重點在察看『檔名』就是了;

-x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開。特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。

-z :透過 gzip 的支持進行壓縮/解壓縮:此時檔名最好爲 *.tar.gz

-j :透過 bzip2 的支持進行壓縮/解壓縮:此時檔名最好爲 *.tar.bz2

-J :透過 xz 的支持進行壓縮/解壓縮:此時檔名最好爲 *.tar.xz。特別留意, -z, -j, -J 不可以同時出現在一串指令列中

-v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來!

-f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!(比較不會忘記)。-C 目錄 :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。

其他後續練習會使用到的選項介紹:

-p(小寫) :保留備份數據的原本權限與屬性,常用於備份(-c)重要的配置文件

-P(大寫) :保留絕對路徑,亦即允許備份數據中含有根目錄存在之意;
--exclude=FILE:在壓縮的過程中,不要將 FILE 打包!

其實最簡單的使用 tar 就只要記憶底下的方式即可:

1. 壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱

2. 查 詢:tar -jtv -f filename.tar.bz2

3. 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄

僅僅解開單一文件的用法

打包某目錄,但不包含該目錄下的某些文件

利用管線命令與數據流一邊打包一邊解壓

在上面的例子中,我們想要『將 /etc 底下的資料直接 copy 到目前所在的路徑,也就是 /tmp 底下』,但是又覺得使用 cp -r 有點麻煩,那麼就直接以這個打包的方式來打包,其中,指令裏面的 - 就是表示那個被打包的文件! 由於我們不想要讓中間文件存在,所以就以這一個方式來進行復制的行爲。

4. XFS文件系統的備份與還原

4.1 xfsdump 備份

xfsdump 除了可以進行文件系統的完整備份 (full backup) 之外,還可以進行累積備份 (Incremental backup) !

累積備份:你在第一次使用 xfsdump 進行完整備份後,等過一段時間的文件系統自然運作後, 你再進行第二次 xfsdump 時,可以選擇累積備份!此時新備份的數據只會記錄與第一次完整備份所有差異的文件而已。

使用 xfsdump 限制:

xfsdump 不支援沒有掛載的文件系統備份!所以只能備份已掛載的!

xfsdump 必須使用 root 的權限才能操作 (涉及文件系統的關係)

xfsdump 只能備份 XFS 文件系統啊!

xfsdump 備份下來的數據 (文件或儲存媒體) 只能讓 xfsrestore 解析

xfsdump 是透過文件系統的 UUID 來分辨各個備份檔的,因此不能備份兩個具有相同 UUID 的文件系統

命令

xfsdump [-L S_label] [-M M_label] [-l #] [-f 備份檔] 待備份資料

選項與參數:

-L :xfsdump 會紀錄每次備份的 session 標頭,這裏可以填寫針對此文件系統的簡易說明

-M :xfsdump 可以紀錄儲存媒體的標頭,這裏可以填寫此媒體的簡易說明

-l :是 L 的小寫,就是指定等級~有 0~9 共 10 個等級喔! (預設爲 0,即完整備份)

-f :有點類似 tar 啦!後面接產生的文件,亦可接例如 /dev/st0 裝置文件名或其他一般文件檔名等

-I :從 /var/lib/xfsdump/inventory 列出目前備份的信息狀態

4.2 XFS 文件系統還原 xfsrestore

xfsdump [-L S_label] [-M M_label] [-l #] [-f 備份檔] 待備份資料

選項與參數:

-I :跟 xfsdump 相同的輸出!可查詢備份數據,包括 Label 名稱與備份時間等

-f :後面接的就是備份檔!企業界很有可能會接 /dev/st0 等磁帶機!我們這裏接檔名!

-L :就是 Session 的 Label name 喔!可用 -I 查詢到的數據,在這個選項後輸入!

-s :需要接某特定目錄,亦即僅復原某一個文件或目錄之意!

-r :如果是用文件來儲存備份數據,那這個就不需要使用。如果是一個磁帶內有多個文件,需要這東西來達成累積復原

-i :進入互動模式,進階管理員使用的!一般我們不太需要操作它!

5 建立映像檔和刻錄DVD

5.1 mkisofs建立映像檔

我們從 FTP 站捉下來的 Linux 映像檔 (不管是 CD 還是 DVD) 都得要繼續刻錄成爲實體的光盤/DVD 後, 才能夠進一步的使用,包括安裝或更新你的 Linux !同樣的道理,你想要利用刻錄機將你的數據刻錄到 DVD 時, 也得要先將你的數據報成一個映像檔,這樣才能夠寫入 DVD 片中。

將你的數據報成一個映像檔的方式就透過 mkisofs 這個指令即可

mkisofs [-o 映像檔] [-Jrv] [-V vol] [-m file] 待備份文件... \

選項與參數:

-o :後面接你想要產生的那個映像檔檔名。

-J :產生較兼容於 windows 機器的文件名結構,可增加文件名長度到 64 個 unicode 字符

-r :透過 Rock Ridge 產生支持 Unix/Linux 的文件數據,可記錄較多的信息(如 UID/GID 等) ;

-v :顯示建置 ISO 文件的過程

-V vol :建立 Volume,有點像 Windows 在文件總管內看到的 CD title 的東西

-m file :-m 爲排除文件 (exclude) 的意思,後面的文件不備份到映像檔中,也能使用 * 通配符喔

-graft-point:graft 有轉嫁或移植的意思,相關資料在底下文章內說明

刻錄root、home、etc目錄:

5.2 刻錄wodim

CentOS 7 使用的是 wodim 這個文字界面指令來進行刻錄的行爲,不過爲了兼容於舊版的cdrecord 這個指令, 因此 wodim 也有連結到 cdrecord 。

wodim --devices dev=/dev/sr0... 

選項與參數:

--devices :用在掃瞄磁盤總線並找出可用的刻錄機,後續的裝置爲 ATA 接口

-v :在 cdrecord 運作的過程中,顯示過程而已。

dev=/dev/sr0 :可以找出此光驅的 bus 地址,非常重要!

blank=[fast|all]:blank 爲抹除可重複寫入的 CD/DVD-RW,使用 fast 較快,all 較完整

-format :對光盤片進行格式化,但是僅針對 DVD+RW 這種格式的 DVD 而已;

[可用選項功能] 主要是寫入 CD/DVD 時可使用的選項,常見的選項包括有:
 -data :指定後面的文件以數據格式寫入,不是以 CD 音軌(-audio)方式寫入!
 speed=X :指定刻錄速度,例如 CD 可用 speed=40 爲 40 倍數,DVD 則可用 speed=4 之類
 -eject :指定刻錄完畢後自動退出光盤
 fs=Ym :指定多少緩衝存儲器,可用在將映像檔先暫存至緩衝存儲器。預設爲 4m,
 一般建議可增加到 8m ,不過,還是得視你的刻錄機而定。

針對 DVD 的選項功能:
 driveropts=burnfree :打開 Buffer Underrun Free 模式的寫入功能
 -sao :支持 DVD-RW 的格式

刻錄:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章