tar 命令詳解

tar 命令[root@linux ~]# tar [-cxtzjvfpPN] 文件與目錄 .
Usage: tar [OPTION...] [FILE].
Examples:        tar -cf archive.tar foo bar         # Create archive.tar from files foo and bar.     
tar -tvf archive.tar                   # List all files in archive.tar verbosely.       
tar -xf archive.tar                    # Extract all files from archive.tar.
更多幫助可以:man tar  或者  tar --help 查看幫助文檔。
必選其中之一參數(而且 一次只能使用其中一個,不能同時使用多個):

(這五個參數是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用,但一次只能用其中一個)
-c:建立一個壓縮文件的參數指令(create 的意思);
-x:解開一個壓縮文件的參數指令!
-t:查看 tarfile 裏面的文件!
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
特別注意,在參數的下達中, c/x/t/r/u 僅能存在一個!不可同時存在!因爲不可能同時壓縮與解壓縮。
可選參數
下面的參數是根據需要在壓縮或解壓檔案時可選的。
-z:有gzip屬性,即需要用 gzip 壓縮
-j:有bz2屬性,即需要用 bzip2 壓縮
-Z:有compress屬性的
-v :壓縮的過程中顯示文件(顯示所有過程)!這個常用,但不建議用在背景執行過程!
-O:將文件解開到標準輸出
-f :使用檔名,請留意,在 f 之後要立即接檔名!不要再加參數!
例如:使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成『 tar -zcvPf tfile sfile』纔對喔!
-p :使用原文件的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的纔會被打包進新建的文件中!
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!
-f: 使用檔案名字,切記,這個參數是最後一個參數,後面只能接檔案名。
出all.tar包中所有文件,-x是解開的意思  

tar -cf all.tar .jpg      // 這條命令是將所有.jpg的文件打成一個名爲all.tar的包。-c是表示產生新的包,-f指定包的文件名。  # tar -rf all.tar .gif         // 這條命令是將所有.gif的文件增加到all.tar的包裏面去。-r是表示增加文件的意思。   # tar -uf all.tar logo.gif   // 這條命令是更新原來tar包all.tar中logo.gif文件,-u是表示更新文件的意思。   # tar -tf all.tar                 // 這條命令是列出all.tar包中所有文件,-t是列出文件的意思   # tar -xf all.tar                 // 這條命令是解出all.tar包中所有文件,-x是解開的意思  

查看
tar -tf aaa.tar.gz // 在不解壓的情況下查看壓縮包的內容
壓縮
tar –cvf jpg.tar .jpg // 將目錄裏所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz
.jpg // 將目錄裏所有jpg文件打包成jpg.tar後,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名爲jpg.tar.gz
tar –cjf jpg.tar.bz2 .jpg // 將目錄裏所有jpg文件打包成jpg.tar後,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名爲jpg.tar.bz2
tar –cZf jpg.tar.Z
.jpg // 將目錄裏所有jpg文件打包成jpg.tar後,並且將其用compress壓縮,生成一個umcompress壓縮過的包,命名爲jpg.tar.Z
解壓
tar –xvf file.tar // 解壓 tar包
tar -zxvf file.tar.gz // 解壓tar.gz
tar -jxvf file.tar.bz2 // 解壓 tar.bz2
tar –Zxvf file.tar.Z // 解壓tar.Z

1、.tar                       用 tar –xvf 解壓
2、
.gz                        用 gzip -d 或者 gunzip 解壓
3、.tar.gz 和 .tgz      用 tar –xzf 解壓
4、.bz2                      用 bzip2 -d 或者用 bunzip2 解壓
5、
.tar.bz2                 用 tar –xjf 解壓
6、.Z                          用 uncompress 解壓
7、
.tar.Z                     用 tar –xZf 解壓
範例:

(下面示例摘自《鳥哥的Linux私房菜基礎篇》。鳥哥官網:http://linux.vbird.org)

範例一:將整個 /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』那是關於絕對路徑的特殊設定。

範例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時,

就得要加上 z 這個參數了!這很重要的!

範例三:將 /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/ 可能會有所不同喔!

範例四:在 /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 內的根目錄 / 是被拿掉了!

範例五:將 /etc/ 內的所有文件備份下來,並且保存其權限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

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

範例六:在 /home 當中,比 2005/06/01 新的文件才備份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -

這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!

要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~

這分別代表 standard output, standard input 與管線命令啦!

這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋囉!

gzip的壓縮詳解
gunzip的用法格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
或者
gunzip [-acfhlLnNqrtvV][-s ][目錄]

主要參數
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解壓後的文件輸出到標準輸出設備。
-f或-force:強行解開壓縮文件,不理會文件名稱或硬連接是否存在,以及該文件是否爲符號連接。
-h或--help:在線幫助。
-l或--list:列出壓縮文件的相關信息。
-L或--license:顯示版本與版權信息。
-n或--no-name:解壓縮時,若壓縮文件內含有原來的文件名稱及時間戳記,則將其忽略不予處理。
-N或--name:解壓縮時,若壓縮文件內含有原來的文件名稱及時間戳記,則將其回存到解開的文件上。
-q或--quiet:不顯示警告信息。
-r或--recursive:遞歸處理,將指定目錄下的所有文件及子目錄一併處理。
-S或--suffix:更改壓縮字尾字符串。
-t或--test:測試壓縮文件是否正確無誤。
-v或--verbose:顯示指令執行過程。
-V或--version:顯示版本信息。

gzip –c filename > filename.gz // Linux壓縮保留源文件的方法
gunzip –c filename.gz > filename // Linux解壓縮保留源文件的方法

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