在Linux中使用zip、tar壓縮、解壓文件

1 zip

1.1 功能說明

解壓或壓縮格式爲zip的文件
語  法:
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工 作目錄>][-ll][-n <字 尾字符串>][-t <日 期時間>][-<壓 縮效率>][壓 縮文件][文件…][-i <範本樣式>][-x <範本樣式>]
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
補充說明:zip是個使用廣泛的壓縮程序,文件經它壓縮後會另外產生具有.zip擴展名 的壓縮文件。
參  數:

params instructions
-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的 數值。

1.2 壓縮

壓縮當前文件夾下所有內容爲test.zip文件,-r 表示遞歸壓縮子目錄下所有文件

zip -r test.zip ./*

1.3 解壓

unzip test.zip

2. tar

2.1 功能說明

tar [-cxtzjvfpPN] 文件與目錄 ….
參數:

params instructions
-c 建立一個壓縮文件的參數指令(create 的意思)
-x 解開一個壓縮文件的參數指令。
-t 查看 tarfile 裏面的文件。
特別注意,在參數的下達中, c/x/t 僅能存在一個。不可同時存在,因爲不可能同時壓縮與解壓縮。
-z 是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j 是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v 壓縮的過程中顯示文件。這個常用,但不建議用在背景執行過程。
-f 使用檔名,請留意,在 f 之後要立即接檔名喔。不要再加參數。
例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成『 tar -zcvPf tfile sfile』纔對喔。
-p 使用原文件的原來屬性(屬性不會依據使用者而變)
-P 可以使用絕對路徑來壓縮。
-N 比後面接的日期(yyyy/mm/dd)還要新的纔會被打包進新建的文件中。
–exclude FILE 在壓縮的過程中,不要將 FILE 打包。

2.2 壓縮

2.2.1 壓縮

將整個 /etc 目錄下的文件全部打包成爲 /tmp/etc.tar,壓縮有三種方式

[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮

特別注意,在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作爲辨識。
* 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file
* 如果加 j 參數,則以 .tar.bz2 來作爲附檔名啊
上述指令在執行的時候,會顯示一個警告訊息:
『tar: Removing leading /’ from member names』那是關於絕對路徑的特殊設定。

2.2.2 查閱

查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時,
就得要加上 z 這個參數了!這很重要的!

2.2.3 解壓全部

將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz

在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,
我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同喔!

2.2.4 解壓部分

在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已

[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

我可以透過 tar -ztvf 來查閱 tarfile 內的文件名稱,如果單隻要一個文件,
就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!

2.2.5 壓縮並保留權限

將 /etc/ 內的所有文件備份下來,並且保存其權限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!

2.2.6 時間爲條件作壓縮備份

在 /home 當中,比 2005/06/01 新的文件才備份

[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

2.2.7 排除某文件作壓縮備份

備份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

2.2.8 打包後直接解壓在/tmp目錄下,而不產生文件

將 /etc/ 打包後直接解開在 /tmp 底下,而不產生文件!

[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -

這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
這分別代表 standard output, standard input 與管線命令啦!
這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋囉!

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