創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2020年2月26日 星期三

tar命令的基礎使用

摘要

Unix/Unix-like的tar命令的基礎使用,較常見的用法。進階用法請見〈tar命令的進階使用〉。本文使用環境是Ubuntu MATE 18.04。

簡介

tar (Tape ARchive)是Unix上常用來做備份封存資料用的命令,可使用磁帶機備份資料,也可存到磁碟中的檔案;當然也包含從封存檔中還原其中檔案的功能。

語法

tar [options...] [file...]

選項用法的形式

tar算是Unix中極古老的命令,有三種語法形式,可依個人習慣採用,也可混用:
  1. Traditional:tar cf archive.tar file_to_archive.txt
  2. Unix-style:tar -c -f archive.tar file_to_archive.txt
  3. GNU-style:tar --create --file archive.tar file_to_archive.txt
2.的寫法也可像:tar -cf archive.tar file_to_archive.txt。為節省篇幅,以下多數使用傳統形式。

基本用法

操作模式

顯示用法與幫助

幾個相關選項與範例:
  • -?, --help
  • --usage
  • --version
  • --show-defaults

$ tar --help

建立/解開/列示tar檔

最常用的三個動作自然是建立、解開、列示tar封裝檔,這三個選項分別是:
  • -c, --create
  • -x, --extract, --get
  • -t, --list
範例:

$ tar cf archive.tar file_or_folder_to_archive
$ tar xf archvie.tar
$ tar tf archive.tar
解開時也可指定只解開其中的幾個檔案:

$ tar xf archive.tar file1 file2

接合/附加/刪除/更新

  • 接合:指把二個tar檔合併成另一個新的。壓縮格式的tar無法使用此功能。
  • 附加:把指定的檔案或目錄加入即有的tar檔中。
  • 刪除:刪除tar檔中指定的檔案或目錄。
  • 更新:以指定檔案或目錄更新tar中的。
以上的選項分別是:
  • -A, --catenate, --concatenate
  • -r, --append
  • --delete
  • -u, --update
範例:

$ tar Af new_archive.tar archive1.tar archive2.tar
$ tar rf archvie.tar new_file
$ tar --delete f archive.tar file_to_delete_in_archive
$ tar uf archive.tar file_to_update

常用選項

幾個較常用選項如下:
  • -f, --file=ARCHIVE:指定的tar檔案。檔名若是 - 則代表 stdout 或 stdio 。
  • -v, --verbose:顯示處理的檔案。若想要更詳細的訊息,可重複指定使用此選項。
  • -C, --directory=DIR:動作之前先變更目錄。這是有順序的,會影響其後的所有選項。
  • -P, --absolute-names:建立封存時,保留前置的/(即使用絕對目錄)。
  • -p, --preserve-permissions, --same-permissions:保留檔案權限的資訊(預設是superuser)
範例:

$ tar cvpPf archive.tar /etc
$ tar xvf archive.tar -C ~/my_folder/

壓縮選項

封存資料時也可指定壓縮格式,以下是較常見的選項與相對應的壓縮格式 (副檔名):
  • -z, --gzip, --gunzip, --ungzip:gzip (.gz)
  • -j, --bzip2:bzip2 (.bz, .bz2)
  • -J, --xz:xz (.xz)
  • 自動依副檔名來決定:a
前列表的前三種,以一般而言壓縮比是越後者越佳,但相對的也越耗時,其封存檔的副檔名像以下的形式:
  • .tar.gz, .tgz
  • .tar.bz, .tar.bz2, .tbz, .tbz2
  • .tar.xz, .txz
範例:

$ tar cjf archive.tar.bz2 file_or_folder_to_archive
$ tar cavf archive.txz file_or_folder_to_archive
$ tar xjf archive.tar.bz2

參考與資源連結

  1. http://manpages.ubuntu.com/manpages/bionic/en/man1/tar.1.html
  2. https://www.gnu.org/software/tar/manual/

沒有留言:

張貼留言