![]() |
![]() |
![]() |
![]() |
![]() |
$ seq 1 1000000 > file ←產生一個大檔案 $ ls -lgGh file ←查看一下大小 -rw-rw-r--. 1 6.6M Jun 3 09:33 file ←大小有 6.6M $ gzip file ←用 gzip 壓縮剛產生的 6.89G 檔 $ ls -lgGh file.gz ←查看壓縮後的檔案大小 -rw-rw-r--. 1 2.1M Jun 3 09:33 file.gz ←大小有 2.1M,只剩原始檔的 1/3 |
$ gzip -d linux.words.gz ←解壓縮檔案〝linux.words.gz〞 |
語法:gzip [-otpiton][--option] [file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
gzip/ 壓縮和解壓縮 gz 檔/ Any |
-c | 輸出到標準輸出 (stdout)且原始檔不會變更 |
-d | 解壓縮 (decompress ) | |
-f | 遇檔名已存在或硬連結檔也強行壓縮 | |
-l | (小寫的〝L〞)列出檔案資訊 | |
-q | 不顯示任何警告和錯誤訊息 | |
-r | 遞回處理,即包含目錄下的檔案一起處理 | |
-S | 變更預設的〝.gz〞副檔名 (注意!副檔名如非〝.z〞,〝.Z〞、〝-z〞或〝-Z〞可能會無法解壓縮) | |
-t | 測試壓縮檔有無損壞 | |
-v | 顯示壓縮/解壓縮資訊 | |
-1..9 | 指定壓縮率,可指定 1~9,數字愈高壓縮率也率高,但處理時間較久,不指定時壓縮率為 6 | |
--help | 指令自帶說明 | |
$ gzip -l my_file.gz ←列出壓縮檔〝my_file.gz〞的資訊 cmpressed uncompressed ratio uncompressed_name 2608 6492 60.2% my_file.txt $ gzip -S -z my_file ←將檔案〝my_file〞壓縮為〝my_file-z〞 $ gzip -9 my_file ←指定壓縮率為 9 (最高壓縮率) $ gzip -c file1 > file2.gz ←壓縮後輸往檔案〝file2.gz〞(原始檔不會被刪除) $ gzip -r /My_Dir ←將目錄〝My_Dir〞(包含其子目錄)內的所有檔案壓縮(目錄內有多少檔案,就會產生多少個壓縮檔) $ gzip *.txt ←將所有副檔名為〝.txt〞旳檔案壓縮 $ gzip -l *.gz ←列出所有〝.gz〞壓縮檔的資訊 |
$ gunzip my_file.gz ←解壓縮〝my_file.gz〞 $ gunzip -r dir ←解壓縮〝dir〞目錄內所有〝.gz〞壓縮檔 $ gunzip -c my_file.gz | cat ←同指令 zcat ,讀取壓縮檔〝.gz〞內容 |
$ zcat my_file.gz | less ←直接讀取壓縮檔〝my_file.gz〞 $ zcat file1.gz file2.gz > file3 ←讀取二個解壓縮檔後合併輸往〝file3〞 |
$ seq 1 1000000 > file ←產生一個大檔案 $ ls -lgGh file ←查看一下大小 -rw-rw-r--. 1 6.6M Jun 3 09:33 file ←大小有 6.6M $ bzip2 file ←用 bzip2 壓縮剛產生的 6.89G 檔 $ ls -lgGh file.bz2 ←查看壓縮後的檔案大小 -rw-rw-r--. 1 1.2M Jun 3 09:33 file.bz2 ←大小只有 1.2M 約只剩原始檔的 1/6 |
$ bzip2 -c file.bz2 > file2 ←壓縮後輸往檔案〝file2〞(原始檔不會被刪除) $ bzip2 -d file.bz2 ←解壓縮檔案〝file.bz2〞 |
語法:bzip2 [-otpiton][--option] [file/directory/] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
bzip2/ 壓縮和解壓縮 bz2 檔/ Any |
-c | 不直接輸出到檔案,而是往標準輸出 |
-d | 解壓縮 (decompress ) | |
-f | 遇檔名已存在或硬連結檔也強行壓縮 | |
-k | 壓縮完不刪除來源檔 | |
-q | 不顯示任何警告和錯誤訊息 | |
-t | 測試壓縮檔有無損壞 | |
-v | 顯示壓縮/解壓縮資訊 | |
-1..9 | 指定壓縮率,可指定 1~9,數字愈高壓縮率也率高,但處理時間較久,預設的壓縮率為 9 | |
--help | 指令自帶說明 | |
$ bunzip2 file.bz2 ←解壓縮〝file.bz2〞 $ bunzip2 -c file.bz2 > file ←解壓縮重定向到〝file〞,原壓縮檔不會被刪 |
$ bzcat my_file.bz2 | head ←直接讀取壓縮檔〝my_file.bz2〞內容的前 10 行 |
$ bzip2recover file.bz2 ←嘗試修復已損壞的壓縮檔〝file.bz2〞 bzip2recover 1.0.4: extracts blocks from damaged .bz2 files. bzip2recover: searching for block boundaries ... block 1 runs from 80 to 274 block 2 runs from 323 to 392 (incomplete) bzip2recover: splitting into blocks writing block 1 to `rec00001file.bz2' ... ←嘗試修復後的檔案會存檔為〝rec00001xxxx.bz2〞 bzip2recover: finished |
語法:xz [-otpiton][--option] [file/directory/] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
xz/ 壓縮和解壓縮 xz 檔/ Any |
-c | 不直接輸出到檔案,而是往標準輸出 |
-d | 解壓縮 (decompress ) | |
-f | 遇檔名已存在或硬連結檔也強行壓縮 | |
-k | 壓縮完不刪除來源檔 | |
-q | 不顯示任何警告和錯誤訊息 | |
-t | 測試壓縮檔有無損壞 | |
-T | 支援多執行緒(multithreading),預設為 1,設 0, thread = CPU 核心數 | |
-v | 顯示壓縮/解壓縮資訊 | |
-1..9 | 指定壓縮率,可指定 1~9,數字愈高壓縮率也率高,但處理時間較久,預設的壓縮率為 9 | |
--help | 指令自帶說明 | |
$ seq 1 1000000 > file ←產生一個大檔案 $ ls -lgGh file ←查看一下大小 -rw-rw-r--. 1 6.6M Jun 3 10:33 file ←大小有 6.6M $ xz file ←用 xz 壓縮剛產生的 6.6M 檔 $ ls -lgGh file.xz ←查看壓縮後的檔案大小 -rw-rw-r--. 1 183K Jun 3 10:35 file.xz ←大小只有 1.83K 約只剩原始檔的 1/36 |
$ xz -T0 file ←利用多執行緒選項來加速壓縮 $ nx -d -T0 file.xz ←利用多執行緒選項來加快解壓縮檔案〝file.xz〞 |
$ unxz archive1.tar.xz ←解壓縮〝archive1.tar.xz〞 $ unxz file[123].xz ←解壓縮〝file1.xz〞,〝file2.xz〞和〝file3.xz〞 $ unxz file.lzma ←unxz 也可解壓縮由 lzma 所壓縮的〝.lzma〞檔 |
$ xzcat file.xz | more ←直接讀取壓縮檔〝file.xz〞的內容 $ xzcat file.xz | tr 'a-z' 'A-Z' > file.txt ←讀取〝file.xz〞內容轉大寫存入〝file.txt〞 |
語法:compress [-otpiton] [file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
compress/ 壓縮和解壓縮 Z 檔/ Any |
-c | 不直接輸出到檔案,而是往標準輸出 |
-d | 解壓縮 (decompress ) | |
-f | 遇檔名已存在或硬連結檔也強行壓縮 | |
-r | 遞回處理,即包含目錄下的檔案一起處理 | |
-v | 顯示壓縮/解壓縮資訊 | |
$ compress my_file ←將檔案〝my_file〞壓縮為〝my_file.Z〞 $ compress -c file1 > file2.Z ←壓縮後的檔案往標準輸出,重定向成檔案〝file2.Z〞(原始檔不會被刪除) $ compress -d file.Z ←解壓縮〝file.Z〞 |
$ uncompress file.Z ←解壓縮檔案〝file.Z〞 $ uncompress -c file.txt.Z | head ←閱讀壓縮檔的內容但沒解壓縮 |
$ zip services.zip /etc/services ←將檔案〝/etc/services〞壓縮成〝services.zip〞 adding: etc/services (deflated 73%) $ zip CFG /etc/*.cfg ←將〝/etc/〞目錄內所有副檔名為 cfg 壓縮打包成〝CFG.zip〞 adding: etc/a2ps.cfg (deflated 62%) adding: etc/a2ps-site.cfg (deflated 59%) adding: etc/enscript.cfg (deflated 53%) |
語法:zip [-otpiton][traget file] [file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
zip/ 壓縮 zip 檔/ Any |
-b PATH | 指定工作時的暫時目錄 |
-c | 為每一被壓縮的檔案加註解 | |
-d | 刪除壓縮檔內的檔案 | |
-D | 壓縮時不儲存目錄名稱 | |
-f | 更新壓縮檔的內容 | |
-F | 嘗試修復損壞的 zip 檔 | |
-h | 指令自帶說明 | |
-i | 只壓縮符合條件的檔案 | |
-j | 不儲存目錄資訊 | |
-l | (小寫的〝L〞)如是文字檔,壓縮時把 UNIX 的換行字元改為 DOS/Windows 的換行字元 (為了相容 DOS/Windows) |
|
-ll | (小寫的〝LL〞)如是文字檔,壓縮時把 DOS/Windows 的換行字元改為 UNIX 的換行字元 |
|
-m | 壓縮完成,刪除來源檔 | |
-n | 指定不要再壓縮的檔案字尾或副檔名 | |
-o | 更新壓縮檔內的 mtime 時間 | |
-q | 不顯示訊息 | |
-P | (大寫的〝p〞) 壓縮檔加密 | |
-r | 遞回處理,即包含目錄一起處理 | |
-T | 測試壓縮檔有無損壞 | |
-u | 更新壓縮檔的內容 (類似 -f 但可增加檔案) | |
-v | 顯示壓縮資訊 | |
-x | 排除符合條件的檔案 | |
-X | 壓縮時不儲存額外的檔案資訊如 times ,擁有者 | |
-y | 壓縮時如為符號連結直接儲存符號連結檔(非符號連結的目的檔) | |
-z | 為壓縮檔加註解 | |
-1..9 | 指定壓縮率,可指定 1~9,數字愈高壓縮率也率高,但處理時間較久 | |
$ zip -r folder.zip my_dir/ ←將整個目錄〝my_dir〞打包壓成檔案〝folder〞 $ zip -r folder.zip dir1/ dir2/ ←將 2 個目錄打包壓成檔案〝folder〞 $ zip -r fileA dir/ fileB ←將目錄〝dir〞加一個檔案〝fileB〞打包壓成檔案〝fileA.zip〞 |
$ zip -r my_pic ~/picture -n .rar:.jpg ←將家目錄內的〝picture〞目錄打包壓成檔案〝my_pic.zip〞,但錄內的的〝.jpg〞或〝.rar〞檔只打包不壓縮 |
$ zip -d my_pic.zip ~/picture/*.bmp ←將副檔名為〝.bmp〞全部從〝my_pic.zip〞中移除 |
$ zip -r taipei_trip -i *.bmp *.raw ←只壓縮工作目錄內的〝.bmp〞和〝.raw〞檔 $ zip -r taipei_trip folder/ -x *.jpg ←排除壓縮〝folder〞目錄內的〝.jpg〞檔 |
$ zip -P '123' file.zip file ←〝123〞是 password,解壓縮時要輸入正確密碼才可解壓縮 $ zip -z my_file.zip *.txt ←為壓縮檔加註解(解壓縮時會看到註解) enter new zip file comment (end with .): ←輸入註解(可好幾行)完成要按 <Ctrl-D> this is my homework↵ Enter←輸入的註解 about KEELUNG of history↵ Enter Ctrl+d ←完成要按 <Ctrl-D> 來結束 |
$ zip -z my_file.zip < comment.txt ←將編輯好的註解檔〝comment.txt〞用輸入重定向輸入壓縮檔 |
$ zip -c my_job file1.xls file2.xls file3.xls ←幫每一被壓縮的檔案加註解 Enter comment for file1.xls Sep ←輸入檔案〝file1.xls〞的註解 Enter commnet for file2.xls Oct ←輸入檔案〝file2.xls〞的註解 Enter comment for file3.xls Nov ←輸入檔案〝file3.xls〞的註解 |
$ zip fileAB fileA fileB ←壓縮檔〝fileAB.zip〞內壓縮了兩個檔 $ echo 'update fileB' >> fileB ←變更其一的內容 $ zip -f fileAB.zip ←更新壓縮檔的內容 |
$ echo 'this is a fileC' > fileC ←新增一〝fileC.txt〞的檔案 $ zip -u fileAB.zip fileC ←將〝fileC〞也打包進壓縮檔 |
$ zip -b /tmp -r folder.zip my_dir/ ←指定 zip 工作時的暫時目錄為〝/tmp〞 |
$ unzip file.zip ←解壓縮〝file.zip〞到工作目錄 $ unzip file.zip -d ~project/←解壓縮到指定的目錄〝project〞 $ unzip -p file.zip ←只閱讀壓縮檔的內容但沒解壓縮 |
語法:unzip [-otpiton][ziped file] [file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
unzip/ 解壓縮 zip 檔 / Any |
-c | 不直接解壓縮到檔案,而是解壓縮往標準輸出 |
-d PATH | 指定解壓縮的目錄(不指定為工作目錄) | |
-f | 更新最新的檔案(比較要解壓縮的檔案和工作目錄檔案,保留其中最新的) | |
-l | (小寫的〝L〞)僅列出壓縮檔簡短的資訊而不真正的解壓縮 | |
-p | 解壓縮到 stdout 或管線 | |
-t | 測試壓縮檔有無損壞 | |
-u | 同 -f,但只有工作目錄不存在的檔案才會被解壓縮 | |
-v | 顯示解壓縮資訊(比 unzip -l 詳細) | |
-x FILE | 指定不解壓縮的檔案 | |
-Z | 類似執行 zipinfo | |
$ unzip -l my_job ←不解壓縮,僅列出壓縮檔簡短的資訊 Archive: my_job.zip FT programming schdule ←如壓縮時有用〝zip -z〞加註解會顯示其註解 Length Data Time Name -------- ---- ---- ---- 6492 06-03-12 12:58 file1.xls Sep ←如壓縮時有用〝zip -c〞加註解,會顯示其註解 6492 06-03-12 12:58 file1.xls Oct ←如壓縮時有用〝zip -c〞加註解,會顯示其註解 6492 06-03-12 12:58 file1.xls Nov ←如壓縮時有用〝zip -c〞加註解,會顯示其註解 -------- ---- 18268 3 files $ unzip my_file.zip ←如壓縮時用〝zip -z〞加註解,解壓縮時會先顯示註解才開始解壓縮 this is my homework ←顯示的註解 about KEELUNG history extracting: people.txt ←開始解壓縮 |
$ unzip -f my_job.zip ←比較欲解壓的目錄內現有的檔案和 zip 內壓縮的檔案,看那個最新就保留那個(但如二者無重複的檔名,因無從比較則不會被解壓縮) $ unzip -u my_job.zip ←同上,但以 zip 檔內的檔案為準 |
語法:zipinfo [-otpiton][file] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
zipinfo/ (zip infomation)列出 zip 檔資訊/ Any |
-1 | (數字 1)只列出 zip 檔內檔案的名稱(此選項會讓其他和輸出格式有關的選項無效) |
-2 | 同 -1 但可配合 -h 、-t 、-z 等選項 | |
-h | 只列出 zip 檔名稱,大小 (byte) 和內含有多檔案 | |
-m | 類似以指令〝ls -l〞列出 zip 檔內檔案的名稱,但增加顯示壓縮率 | |
-M | 類似以指令〝ls -l | more〞列出 zip 檔內檔案的名稱 | |
-s | 類似以指令〝ls -l〞列出 zip 檔內檔案的名稱,此選項為預設值 | |
-t | 和 -h 類似,但增加顯示壓縮率 | |
-T | 類似 -s 但更為詳細的時間 | |
-v | 詳細列出每一檔的的資訊 | |
-x | 指定列出的檔案 | |
-z | 如用〝zip -z〞加註解,則顯示其註解 |
|
$ zipinfo ft.zip ←類似以指令〝ls -l〞列出 zip 檔內檔案的名稱 Archive: ft.zip 4101 bytes 3 files -rw-rw-r-- 2.3 unx 7253 tx defN 4-Jun-11 21:16 ft.c -rw-rw-r-- 2.3 unx 953 tx defN 4-Jun-11 21:16 ft.h -rw-rw-r-- 2.3 unx 1581 tx defN 4-Jun-11 21:19 lpt_ctr.c 3 files, 9787 bytes uncompressed, 3715 bytes compressed: 62.0% |
原始的 tarball 檔名 | 縮寫的 tarball 檔名 |
.tar.bz2 | .tbz 或.tb2 或 .tbz2 |
.tar.gz | .tgz |
.tar.Z | .taz |
.tar.xz | .txz |
.tar.lzma | .tlz |
語法:tar [-otpiton][traget file] [file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
tar/ (tape archive)檔案打包/ Any |
必要有其一的選項 | |
-A | 將一 tar 文件追加到另一個 tar文件中(可能不適用於 tarball 檔) | |
-c | 建立 tar 檔 | |
-d | 比對 tar 檔和目錄內檔案的異同 | |
-f | 指定檔案 | |
-r | 新增檔案到 tar 檔(可能不適用於 tarball 檔) | |
-t | 列出 tar 檔的內容 | |
-u | 更新最新的檔案 (比較 tar 檔內容和目錄內檔案,只保留最新的) | |
-x | 還原檔案 | |
--delete | 刪除 tar 檔內的檔案 (可能不適用於 tarball 檔) | |
常用選項 | ||
-C PATH | 變更還原的路徑 |
|
-k | 還原時不覆蓋文件系統上已有的文件 | |
-j | 用 bzip2 來壓縮/解壓縮 | |
-J | 用 xz 來壓縮/解壓縮 | |
-p | 還原檔案的權限(如為 root 此為預設值) | |
-P | 使用絕對路徑 即不移除路徑最前面的〝/〞 | |
-v | 顯示處理資訊 | |
-z | 用 gzip 來壓縮/解壓縮 | |
-Z | 用 compress 來壓縮/解壓縮(系統中要有 compress 這指令) |
$ tar -cf etc_gconf.tar /etc/gconf ←將目錄〝/etc/gconf〞內所有檔案整個打包成一個檔案〝etc_gconf.tar〞 $ tar -xf etc_conf.tar ←將 tar 檔還原(還原在工作目錄) |
$ tar -cvf etc_gconf.tar /etc/gconf $ tar -xvf etc_conf.tar |
$ tar -jcvf etc_gconf.tbz /etc/gconf ←tar 打包完再用 bzip2 壓縮 $ tar -jxvf etc_conf.tbz ←用 bzip2 解壓縮後再用 tar 還原 $ tar -Jcvf etc_gconf.txz /etc/gconf ←tar 打包完再用 xz 壓縮 $ tar -Jxvf etc_conf.txz ←用 unxz 解壓縮後再用 tar 還原 $ tar -zcvf etc_gconf.tar.gz /etc/gconf ←打包完再用 gzip 壓縮 $ tar -zxvf etc_conf.tar.gz ←用 gzip 解壓縮後再用 tar 還原 $ tar -Zcvf etc_gconf.tar.Z /etc/gconf ←打包完再用 compress 壓縮 $ tar -Zxvf etc_conf.tar.Z ←用 compress 解壓縮後再用 tar 還原 |
$ gzip -d project.tar.Z ←用 gzip 先解壓縮〝.Z〞檔 $ tar -xvf project.tar ←再用 tar 還原〝.tar〞檔 |
$ tar -jtvf etc_gconf.tbz ←列出 tar 檔的內容 $ tar -jcf bin.tar.bz2 /bin /sbin ←可一次打包多個目錄 $ tar -Af fileA.tar fileB.tar ←將兩 tar 檔合併(〝fileB.tar〞併入〝fileA.tar〞) $ tar -jxvf etc_gconf.tbz -C /tmp ←還原的路徑為〝/tmp〞 $ tar -uf my_sch.tar -C SCH_DIR/ ←更新 tar 檔 $ tar --delete -f my_sch.tar SCH_DIR/*.html ←刪除 tar 檔中的檔案(刪除目錄 SCH_DIR/ 內所有的 .html 檔) $ tar -jcvf etc_back.tar.bz2 /etc > tar.log ←可將整個打包過程重定向到〝tar.log〞來記錄 |