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 時,再次提到這個指令跟大家再解釋囉!