壓縮分為有損或無損。有損壓縮對于減小文件大小非常有效,但會丟失信息的完整性。換句話說,壓縮后的文件與原始文件并不完全相同。 這種類型的壓縮非常適合圖形、視頻和音頻文件,文件中的微小差異幾乎不會被注意到。
本章重點介紹這種無損壓縮類型,許多實用程序和算法都可以提供這種壓縮類型。 不幸的是,正如您想象的那樣,無損壓縮不如有損壓縮那么有效,但有時,完整性往往比壓縮比重要得多。
將文件打包在一起
通常,壓縮文件時要做的第一件事是將它們組合成存檔。在大多數情況下,歸檔文件時,您將使用 tar
命令。Tar 代表磁帶存檔,指的是系統使用磁帶存儲數據的史前計算時代。 tar
命令從多個文件創建一個文件,該文件稱為存檔、tar 文件或 tarball。
您可以使用下面的命令將多個文件組合起來創建一個存檔文件:tar -cvf <文件名.tar> 文件1 文件2 文件3
c
選項表示創建,v
(代表詳細且可選)列出 tar 正在處理的文件,f
表示寫入以下文件。
我們可以通過使用帶有 -t
內容列表開關的 tar
命令來顯示 tarball 中的這些文件,而無需提取它們,如下所示:tar -tvf <文件名>.tar
您可以使用帶有 -x
(extract)開關的 tar
命令從 tarball 中提取這些文件,如下所示:tar -xvf <文件名>.tar
如果您想提取文件并“靜默”執行,即不顯示任何輸出,您可以簡單地刪除 -v
(verbose)開關,如下所示:tar -xf <文件名>.tar
請注意,默認情況下,如果提取的文件已存在,tar 將刪除現有文件并將其替換為提取的文件。
壓縮文件
現在我們有一個存檔文件,但該文件比原始文件的總和還要大。 如果您想壓縮這些文件以便于傳輸怎么辦?Linux 有幾個能夠創建壓縮文件的命令。 我們將看看這些:
- gzip, which uses the extension .tar.gz or .tgz
- bzip2, which uses the extension .tar.bz2
- compress, which uses the extension .tar.z
這些都能夠壓縮我們的文件,但是它們使用不同的壓縮算法并且具有不同的壓縮率。一般來說,compress
速度最快,但生成的文件較大; bzip2
最慢,但生成的文件最小; gzip
介于兩者之間。
用gzip
壓縮
gzip <文件名>.tar
– 對文件進行壓縮。
gunzip <文件名>.*
– 使用gunzip 命令(GNU unzip 的縮寫)解壓縮文件。
用bzip2
壓縮
bzip2 <文件名>.tar
– 對文件進行壓縮。
bunzip2 <文件名>.*
– 解壓縮文件。
用compress
壓縮
compress <文件名>.tar
– 對文件進行壓縮。
uncompress <文件名>.*
– 解壓縮文件。
創建存儲設備的逐位或物理副本
dd
命令會逐位復制文件、文件系統甚至整個硬盤驅動器。 這意味著即使已刪除的文件也會被復制(是的,重要的是要知道已刪除的文件可能是可恢復的),從而可以輕松發現和恢復。大多數邏輯復制實用程序(例如 cp
)不會復制已刪除的文件。
需要注意的是,dd
命令不應用于典型的日常文件和存儲設備復制,因為它非常慢; 其他命令可以更快、更有效地完成工作。 不過,當您需要一份沒有文件系統或其他邏輯結構的存儲設備副本時(例如在取證調查中),它非常有用。
dd 命令的基本語法如下:dd if=inputfile of=outputfile
因此,如果您想制作閃存驅動器的物理副本,假設閃存驅動器是 sdb,您將輸入以下內容:dd if=/dev/sdb of=/root/flashcopy
有許多選項可與 dd 命令一起使用,您可以對這些選項進行一些研究,但最有用的是 noerror
選項和 bs
(block size)選項。 顧名思義,noerror
選項即使遇到錯誤也會繼續復制。 bs
選項允許您確定要復制的數據的塊大小(每個塊讀取/寫入的字節數)。默認情況下,它設置為 512 字節,但可以更改它以加快進程。例如: dd if=/dev/media of=/root/flashcopy bs=4096 conv:noerror