1. 程式人生 > >【轉】tar 命令詳解

【轉】tar 命令詳解

tar 命令

[[email protected] ~]# 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 檢視幫助文件。

必選其中之一引數(而且 一次只能使用其中一個,不能同時使用多個):(這五個引數是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用,但一次只能用其中一個)

  1. -c:建立一個壓縮檔案的引數指令(create 的意思);
  2. -x:解開一個壓縮檔案的引數指令!
  3. -t:檢視 tarfile 裡面的檔案!
  4. -r:向壓縮歸檔檔案末尾追加檔案
  5. -u:更新原壓縮包中的檔案
特別注意,在引數的下達中, c/x/t/r/u 僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。

可選引數

下面的引數是根據需要在壓縮或解壓檔案時可選的。

  1. -z:有gzip屬性,即需要用 gzip 壓縮
  2. -j:有bz2屬性,即需要用 bzip2 壓縮
  3. -Z:有compress屬性的
  4. -v :壓縮的過程中顯示檔案(顯示所有過程)!這個常用,但不建議用在背景執行過程!
  5. -O:將檔案解開到標準輸出
  6. -f :使用檔名,請留意,在 f 之後要立即接檔名!不要再加引數!
  7. 例如:使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成『 tar -zcvPf tfile sfile』才對喔!
  8. -p :使用原檔案的原來屬性(屬性不會依據使用者而變)
  9. -P :可以使用絕對路徑來壓縮!
  10. -N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!
  11. --exclude FILE:在壓縮的過程中,不要將 FILE 打包!
  12. -f: 使用檔案名字,切記,這個引數是最後一個引數,後面只能接檔案名。
# 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    // 在不解壓的情況下檢視壓縮包的內容 

壓縮

  1. tar –cvf jpg.tar *.jpg // 將目錄裡所有jpg檔案打包成tar.jpg
  2. tar –czf jpg.tar.gz *.jpg // 將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz
  3. tar –cjf jpg.tar.bz2 *.jpg // 將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用bzip2壓縮,生成一個bzip2壓縮過的包,命名為jpg.tar.bz2
  4. tar –cZf jpg.tar.Z *.jpg // 將目錄裡所有jpg檔案打包成jpg.tar後,並且將其用compress壓縮,生成一個umcompress壓縮過的包,命名為jpg.tar.Z

解壓

  1. tar –xvf file.tar // 解壓 tar包
  2. tar -zxvf file.tar.gz // 解壓tar.gz
  3. tar -jxvf file.tar.bz2 // 解壓 tar.bz2
  4. 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 解壓

範例:

  1. 範例一:將整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
  2. [[email protected] ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
  3. [[email protected] ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
  4. [[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
  5. # 特別注意,在引數 f 之後的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
  6. # 如果加 z 引數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
  7. # 如果加 j 引數,則以 .tar.bz2 來作為附檔名啊~
  8. # 上述指令在執行的時候,會顯示一個警告訊息:
  9. # 『tar: Removing leading `/' from member names』那是關於絕對路徑的特殊設定。
  10. 範例二:查閱上述 /tmp/etc.tar.gz 檔案內有哪些檔案?
  11. [[email protected] ~]# tar -ztvf /tmp/etc.tar.gz
  12. # 由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,
  13. # 就得要加上 z 這個引數了!這很重要的!
  14. 範例三:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
  15. [[email protected] ~]# cd /usr/local/src
  16. [[email protected] src]# tar -zxvf /tmp/etc.tar.gz
  17. # 在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,
  18. # 我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
  19. # 則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
  20. # 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不同喔!
  21. 範例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
  22. [[email protected] ~]# cd /tmp
  23. [[email protected] tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
  24. # 我可以透過 tar -ztvf 來查閱 tarfile 內的檔名稱,如果單隻要一個檔案,
  25. # 就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
  26. 範例五:將 /etc/ 內的所有檔案備份下來,並且儲存其許可權!
  27. [[email protected] ~]# tar -zxvpf /tmp/etc.tar.gz /etc
  28. # 這個 -p 的屬性是很重要的,尤其是當您要保留原本檔案的屬性時!
  29. 範例六:在 /home 當中,比 2005/06/01 新的檔案才備份
  30. [[email protected] ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
  31. 範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
  32. [[email protected] ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
  33. 範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生檔案!
  34. [[email protected] ~]# cd /tmp
  35. [[email protected] tmp]# tar -cvf - /etc | tar -xvf -
  36. # 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
  37. # 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
  38. # 這分別代表 standard output, standard input 與管線命令啦!
  39. # 這部分我們會在 Bash shell 時,再次提到這個指令跟大家再解釋囉!

gzip的壓縮詳解

  1. gunzip的用法格式
  2. gunzip [-acfhlLnNqrtvV][-s ][檔案...]
  3. 或者
  4. gunzip [-acfhlLnNqrtvV][-s ][目錄]
  5. 主要引數
  6. -a或--ascii:使用ASCII文字模式。
  7. -c或--stdout或--to-stdout:把解壓後的檔案輸出到標準輸出裝置。
  8. -f或-force:強行解開壓縮檔案,不理會檔名稱或硬連線是否存在,以及該檔案是否為符號連線。
  9. -h或--help:線上幫助。
  10. -l或--list:列出壓縮檔案的相關資訊。
  11. -L或--license:顯示版本與版權資訊。
  12. -n或--no-name:解壓縮時,若壓縮檔案內含有原來的檔名稱及時間戳記,則將其忽略不予處理。
  13. -N或--name:解壓縮時,若壓縮檔案內含有原來的檔名稱及時間戳記,則將其回存到解開的檔案上。
  14. -q或--quiet:不顯示警告資訊。
  15. -r或--recursive:遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。
  16. -S或--suffix:更改壓縮字尾字串。
  17. -t或--test:測試壓縮檔案是否正確無誤。
  18. -v或--verbose:顯示指令執行過程。
  19. -V或--version:顯示版本資訊。
  20. gzip –c filename > filename.gz // Linux壓縮保留原始檔的方法
  21. gunzip –c filename.gz > filename // Linux解壓縮保留原始檔的方法