在Linux系統中,我們通常使用的檔案壓縮命令有:bunzip2 , bzip2 , cpio , gunzip , gzip ,split(切割檔案) , zgrep(在壓縮檔中尋找匹配的Regex), zip ,unzip, tar ,rar。
最後四個是我比較常用的,今天的筆記就寫這四個的好了。
1、tar:
tar命令:tar [選項...] [FILE]...
輸入“tar -?”擷取相關協助資訊,tar的協助文檔給出樣本如下:
樣本
tar -cf archive.tar foo bar # 從檔案 foo 和 bar 建立歸檔檔案archive.tar。
tar -tvf archive.tar # 詳細列舉歸檔檔案 archive.tar中的所有檔案。
tar -xf archive.tar # 展開歸檔檔案 archive.tar中的所有檔案。
如果是要壓縮檔夾的話,輸入:
tar -cvf dirArchive.tar /dirName
同樣的,要將歸檔檔案解壓到特定檔案夾的話,則是:
tar -xvf dirArchive.tar /dirName
下面複習一下。我們先人為做個檔案夾出來,裡面放置若干檔案夾和檔案:
我們首先建立一個tar檔案,先壓縮一個檔案夾(testdir):
tar -cf testdir.tar testdir
然後列出該壓縮包裡的結構:
接著我們向這個壓縮包追加檔案:
當然了,上述單步操作沒必要做了,壓縮包裡面已經有這個檔案。
然後再看看這個壓縮包裡的結構:
如果使用樣本中的-v選項,則會將壓縮包裡的檔案屬性全部列出。包括許可權,建立人,位元組大小,修改時間和檔案名稱:
從tar壓縮檔中解壓並顯示檔案清單:
一般來說比較常用到的選項有主操作選項:
另外再練習一下其他的一些用法:
1、當壓縮testdir目錄的時候,需要將檔案夾根路徑內的test檔案排除:
2、只壓縮比指定時間更新的檔案:
3、壓縮所有檔案名稱首碼為“te”的檔案或檔案夾(或者壓縮尾碼為“st”的檔案):
最後補充一下常用的選項:
-p, --preserve-permissions, --same-permissions
保留解壓檔案許可權資訊(預設只為超級使用者服務)
--preserve 與 -p 和 -s 一樣
--same-owner 嘗試解壓時保持所有者關係一致(超級使用者預設此項)
-r, --append 追加檔案至歸檔結尾
-u, --update 僅追加比歸檔中副本更新的檔案
-k, --keep-old-files 解壓時不要替換存在的檔案
--keep-newer-files
不要替換比歸檔中副本更新的已存在的檔案
--no-overwrite-dir 保留已存在目錄的中繼資料
--overwrite 解壓時重寫存在的檔案
--overwrite-dir
解壓時重寫已存在目錄的中繼資料(預設)
--recursive-unlink 解壓目錄之前先清除目錄層次
--remove-files 在添加檔案至歸檔後刪除它們
-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE 只儲存比 DATE-OR-FILE 更新的檔案
2、rar:
rar <command> -<switch 1> -<switch N> <archive> <files...><@listfiles...> <path_to_extract>
Linux系統的預設軟體包裡是不包含rar壓縮公用程式的,所以我們先安裝rar:
sudo apt-get install rar
<command>選項只可以從給出的選項中輸入一個(且只能一個),我們看一下它提供的命令列表:
使用舉例,比如說現在我們要進行檔案壓縮:
在完成壓縮之後,我們可以通過命令l擷取壓縮檔內具體的結構資訊:
甚至可以通過命令p將壓縮檔內的所有資訊輸出到控制台:
<switch N>部分則提供了一些功能性的選項。
比如說以追加性的方式更新壓縮檔可選用-ad:
或者說想把某個檔案排除在外可以選用開關-x(注意,要排除的串要緊跟在x後面,不用加任何符號),比如我們這裡想要將檔案夾根路徑下凡是“te”開頭的檔案都排除:
還有加密,用開關-p,同樣的,密碼緊隨p後面即可:
如果相對檔案進行解壓或者直接開啟檔案,就會要求你輸入密碼:
除此之外,還有一些常用的選項有:
ag[format] Generate archive name using the current date
cl Convert names to lower case
cu Convert names to upper case
df Delete files after archiving
ed Do not add empty directories
dw Wipe files after archiving
其他的命令和開關可參照協助手冊。
3、zip , unzip:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
zip和unzip的使用方法是比較簡單的,甚至連協助文檔都寫得很簡單,所以也就沒什麼筆記好寫的了,直接看協助文檔即可。
linux zip 命令詳解
功能說明:壓縮檔。
語 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目錄>][-ll][-n <字尾字串>][-t <日期時間>][-<壓縮效率>][壓縮檔][檔案...][-i <範本樣式>][-x <範本樣式>]
補充說明:zip是個使用廣泛的壓縮程式,檔案經它壓縮後會另外產生具有".zip"副檔名的壓縮檔。
參 數:
-A 調整可執行檔自動解壓縮檔案。
-b<工作目錄> 指定暫時存放檔案的目錄。
-c 替每個被壓縮的檔案加上注釋。
-d 從壓縮檔內刪除指定的檔案。
-D 壓縮檔內不建立目錄名稱。
-f 此參數的效果和指定"-u"參數類似,但不僅更新既有檔案,如果某些檔案原本不存在於壓縮檔內,使用本參數會一併將其加入壓縮檔中。
-F 嘗試修複已損壞的壓縮檔。
-g 將檔案壓縮後附加在既有的壓縮檔之後,而非另行建立新的壓縮檔。
-h 線上協助。
-i<範本樣式> 只壓縮合格檔案。
-j 只儲存檔案名稱及其內容,而不存放任何目錄名稱。
-J 刪除壓縮檔前面不必要的資料。
-k 使用MS-DOS相容格式的檔案名稱。
-l 壓縮檔時,把LF字元置換成LF+CR字元。
-ll 壓縮檔時,把LF+CR字元置換成LF字元。
-L 顯示著作權資訊。
-m 將檔案壓縮並加入壓縮檔後,刪除原始檔案,即把檔案移到壓縮檔中。
-n<字尾字串> 不壓縮具有特定字尾字串的檔案。
-o 以壓縮檔內擁有最新更改時間的檔案為準,將壓縮檔的更改時間設成和該檔案相同。
-q 不顯示指令執行過程。
-r 遞迴處理,將指定目錄下的所有檔案和子目錄一併處理。
-S 包含系統和隱藏檔案。
-t<日期時間> 把壓縮檔的日期設成指定的日期。
-T 檢查備份檔案內的每個檔案是否正確無誤。
-u 更換較新的檔案到壓縮檔內。
-v 顯示指令執行過程或顯示版本資訊。
-V 儲存VMS作業系統的檔案屬性。
-w 在檔案名稱裡假如版本編號,本參數僅在VMS作業系統下有效。
-x<範本樣式> 壓縮時排除合格檔案。
-X 不儲存額外的檔案屬性。
-y 直接儲存符號串連,而非該串連所指向的檔案,本參數僅在UNIX之類的系統下有效。
-z 替壓縮檔加上注釋。
-$ 儲存第一個被壓縮檔所在磁碟的卷冊名稱。
-<壓縮效率> 壓縮效率是一個介於1-9的數值。
linux unzip 命令詳解
功能說明:解壓縮zip檔案
語 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密碼>][.zip檔案][檔案][-d <目錄>][-x <檔案>] 或 unzip [-Z]
補充說明:unzip為.zip壓縮檔的解壓縮程式。
參 數:
-c 將解壓縮的結果顯示到螢幕上,並對字元做適當的轉換。
-f 更新現有的檔案。
-l 顯示壓縮檔內所包含的檔案。
-p 與-c參數類似,會將解壓縮的結果顯示到螢幕上,但不會執行任何的轉換。
-t 檢查壓縮檔是否正確。
-u 與-f參數類似,但是除了更新現有的檔案外,也會將壓縮檔中的其他檔案解壓縮到目錄中。
-v 執行是時顯示詳細的資訊。
-z 僅顯示壓縮檔的備忘文字。
-a 對文字檔進行必要的字元轉換。
-b 不要對文字檔進行字元轉換。
-C 壓縮檔中的檔案名稱區分大小寫。
-j 不處理壓縮檔中原有的目錄路徑。
-L 將壓縮檔中的全部檔案名稱改為小寫。
-M 將輸出結果送到more程式處理。
-n 解壓縮時不要覆蓋原有的檔案。
-o 不必先詢問使用者,unzip執行後覆蓋原有檔案。
-P<密碼> 使用zip的密碼選項。
-q 執行時不顯示任何資訊。
-s 將檔案名稱中的空白字元轉換為底線字元。
-V 保留VMS的檔案版本資訊。
-X 解壓縮時同時回存檔案原來的UID/GID。
[.zip檔案] 指定.zip壓縮檔。
[檔案] 指定要處理.zip壓縮檔中的哪些檔案。
-d<目錄> 指定檔案解壓縮後所要儲存的目錄。
-x<檔案> 指定不要處理.zip壓縮檔中的哪些檔案。
-Z unzip -Z等於執行zipinfo指令
範例:
zip命令可以用來將檔案壓縮成為常用的zip格式。unzip命令則用來解壓縮zip檔案。
1. 我想把一個檔案abc.txt和一個目錄dir1壓縮成為yasuo.zip:
# zip -r yasuo.zip abc.txt dir1
2.我下載了一個yasuo.zip檔案,想解壓縮:
# unzip yasuo.zip
3.我目前的目錄下有abc1.zip,abc2.zip和abc3.zip,我想一起解壓縮它們:
# unzip abc?.zip
注釋:?表示一個字元,如果用*表示任意多個字元。
4.我有一個很大的壓縮檔large.zip,我不想解壓縮,只想看看它裡面有什麼:
# unzip -v large.zip
5.我下載了一個壓縮檔large.zip,想驗證一下這個壓縮檔是否下載完全了
# unzip -t large.zip
6.我用-v選項發現music.zip壓縮檔裡面有很多目錄和子目錄,並且子目錄中其實都是歌曲mp3檔案,我想把這些檔案都下載到第一級目錄,而不是一層一層建目錄:
# unzip -j music.zip