linux(7)

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