1.gzip – 壓縮一個或多個文件
當執行 gzip 命令時,則原始文件的壓縮版會替代原始文件。相對應的 gunzip 程序被用來把壓縮文件復原爲沒有被壓縮的版本。
$ ls -l /etc > foo.txt
$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2017-08-01 07:15 foo.txt
$ gzip foo.txt
$ ls -l foo.*
-rw-r--r-- 1 me me 3230 2017-08-01 07:15 foo.txt.gz
$ gunzip foo.txt.gz
$ ls -l foo.*
-rw-r--r-- 1 me me 15738 2017-08-01 07:15 foo.txt
參數:
-c 把輸出寫入到標準輸出,並且保留原始文件。也有可能用–stdout 和 –to-stdout 選項來指定。
-d 解壓縮。正如 gunzip 命令一樣。也可以用 –decompress 或者 –uncompress 選項來指定.
-f 強制壓縮,即使原始文件的壓縮文件已經存在了,也要執行。也可以用 –force 選項來指定。
-h 顯示用法信息。也可用 –help 選項來指定。
-l 列出每個被壓縮文件的壓縮數據。也可用 –list 選項。
-r 若命令的一個或多個參數是目錄,則遞歸地壓縮目錄中的文件。也可用 –recursive 選項來指定。
-t 測試壓縮文件的完整性。也可用 –test 選項來指定。
-v 顯示壓縮過程中的信息。也可用 –verbose 選項來指定。
-number 設置壓縮指數。number 是一個在 1(最快,最小壓縮)到9(最慢,最大壓縮)之間的整數。數值 1 和 9 也可以各自用 –fast 和 –best 選項來表示。默認值是整數 6。
注:
(1)對應於 gzip 還有一個程序,叫做 zcat,它等同於帶有 -c 選項的 gunzip 命令。它可以被用來如 cat 命令作用於 gzip 壓縮文件
(2)zless
$ zcat foo.txt.gz | less //和zless 程序是相同的功能。
2.bzip2
與 gzip 程序相似,但是使用了不同的壓縮算法,捨棄了壓縮速度,而實現了更高的壓縮級別
$ ls -l /etc > foo.txt
$ ls -l foo.txt
-rw-r--r-- 1 me me 15738 2017-08-01 13:51 foo.txt
$ bzip2 foo.txt
$ ls -l foo.txt.bz2
-rw-r--r-- 1 me me 2792 2017-08-01 13:51 foo.txt.bz2
$ bunzip2 foo.txt.bz2
3.tar – 歸檔文件
tar mode[options] pathname…
c 爲文件和/或目錄列表創建歸檔文件。
x 抽取歸檔文件。
r 追加具體的路徑到歸檔文件的末尾。
t 列出歸檔文件的內容
//創建了一個名爲 playground.tar 的 tar 包,其包含整個 playground 目錄層次結果
$ tar cf playground.tar playground
//抽取 tar 包 playground 到一個新位置
$ mkdir foo
$ cd foo
$ tar xf ../playground.tar
//tar 命令經常結合 find 命令一起來製作歸檔文件
$ find playground -name 'file-A' -exec tar rf playground.tar'{}' '+'
使用 find 命令來匹配 playground 目錄中所有名爲 file-A 的文件,然後使用-exec行爲,來喚醒帶有追加模式(r)的 tar 命令,把匹配的文件添加到歸檔文件playground.tar 裏面。
$ find playground -name 'file-A' | tar cf - --files-from=-| gzip > playground.tgz
使用 find 程序產生了一個匹配文件列表,然後把它們管道到 tar 命令中。如果指定了文件名“-”,則其被看作是標準輸入或輸出,這個 –file-from 選項導致 tar 命令從一個文件而不是命令行來讀入它的路徑名列表。最後,這個由 tar 命令產生的歸檔文件被管道到 gzip 命令中,然後創建了壓縮歸檔文件 playground.tgz。此.tgz 擴展名是命名由 gzip 壓縮的 tar 文件的常規擴展名。有時候也會使用.tar.gz 這個擴展名。
注:
“-”來表示標準輸入/輸出的慣例,也被大量的其它程序使用
–file-from 選項也可以用 -T 來指定
4.zip – 既是壓縮工具,也是一個打包工具
//製作一個 playground 的 zip 版本的文件包
$ zip -r playground.zip playground
//使用 unzip 程序,來直接抽取一個 zip 文件的內容
$ cd foo
$ unzip ../playground.zip
注意:對於 zip 命令(與 tar 命令相反)要注意一點,就是如果指定了一個已經存在的文件包,其被更新而不是被替代。這意味着會保留此文件包,但是會添加新文件,同時替換匹配的文件。
//通過 -@ 選項,有可能把一系列的文件名管道到 zip 命令
$ cd
$ find playground -name "file-A" | zip -@ file-A.zip
使用 find 命令產生一系列與“file-A”相匹配的文件列表,並且把此列表管道到zip 命令,然後創建包含所選文件的文件包 file-A.zip
//把 ls 命令的輸出管道到 zip 命令
$ ls -l /etc/ | zip ls-etc.zip -
5.同步文件和目錄
rsync
rsync options source destination
這裏 source 和 destination 是下列選項之一:
- 一個本地文件或目錄
- 一個遠端文件或目錄,以
[user@]host:path
的形式存在 - 一個遠端 rsync 服務器,由
rsync://[user@]host[:port]/path
指定
rsync 不支持遠端到遠端的複製
// -a 選項(遞歸和保護文件屬性)和 -v 選項(冗餘輸出),來在 foo 目錄中製作一個 playground 目錄的鏡像。
$ rsync -av playground foo