Tar[Linux系統命令]

Tar[Linux系統命令]
Tar[Linux系統命令]
更多義項 ▼ 收起列表 ▲

Unix和類Unix系統上的壓縮打包工具,可以將多個檔案合併為一個檔案,打包後的檔案名稱亦為“tar”。tar檔案格式已經成為POSIX標準,最初是POSIX.1-1988,當前是POSIX.1-2001。本程式最初的設計目的是將檔案備份到磁帶上(tape archive),因而得名tar。

版本

常用的tar是自由軟體基金會開發的GNU版,穩定版本是1.28,發布於2014年7月27日

同時,它有多個壓縮率不同的版本,如tar.xz和tar.gz,前者的壓縮率更高,但可能有兼容性問題。

作用

tar命令是Unix/Linux系統中備份檔案的可靠方法,幾乎可以工作於任何環境中,它的使用許可權是所有用戶。

縮寫

tar代表未壓縮的tar檔案。已壓縮的tar檔案則附加壓縮檔案的擴展名,如經過gzip壓縮後的tar檔案,擴展名為“.tar.gz”。由於受到DOS8.3檔案名稱格式的限制,常使用下列縮寫:

•.tgz等價於.tar.gz

•.tbz與tb2等價於.tar.bz2

•.taz等價於.tar.Z

•.tlz等價於.tar.lzma

•.txz等價於.tar.xz

GNU tar的用法

命令格式是:tar 功能 選項 檔案

可以將代表功能和選項的單個字母合併;當使用單個字母時,可以不用在字母前面加“-”。某些版本的tar要求嚴格按照功能字、選項字的順序,而有些版本的tar並不在意這個順序。

功能

•-c,--create 創建新的tar檔案

•-x,--extract,--get 解開tar檔案

•-t,--list 列出tar檔案中包含的檔案的信息

•-r,--append 附加新的檔案到tar檔案中

•-u,--update 用已打包的檔案的較新版本更新tar檔案

•-A,--catenate,--concatenate 將tar檔案作為一個整體追加到另一個tar檔案中

•-d,--diff,--compare 將檔案系統里的檔案和tar檔案里的檔案進行比較

•--delete 刪除tar檔案里的檔案。注意,這個功能不能用於已保存在磁帶上的tar檔案。

常用選項

•-v,--verbose 列出每一步處理涉及的檔案的信息,只用一個“v”時,僅列出檔案名稱,使用兩個“v”時,列出許可權、所有者、大小、時間、檔案名稱等信息。

•-k,--keep-old-files 不覆蓋檔案系統上已有的檔案。

•-f,--file [主機名:]檔案名稱 指定要處理的檔案名稱。可以用“-”代表標準輸出或標準輸入。

•-P,--absolute-names 使用絕對路徑。

•-j,--bzip2 調用bzip2執行壓縮或解壓縮。注意,由於部分老版本的tar使用-I實現本功能,因此,編寫腳本時,最好使用--bzip2。

•-J,--xz,--lzma 調用XZ Utils執行壓縮或解壓縮。依賴XZ Utils。

•-z,--gzip,--gunzip,--ungzip 調用gzip執行壓縮或解壓縮。

•-Z,--compress,--uncompress 調用compress執行壓縮或解壓縮。

主要參數

使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。

主選項

-c 創建新的檔案檔案。如果用戶想備份一個目錄或是一些檔案,就要選擇這個選項。

-r 把要存檔的檔案追加到檔案檔案的末尾。例如用戶已經做好備份檔案,又發現還有一個目錄或是一些檔案忘記備份了,這時可以使用該選項,將忘記的目錄或檔案追加到備份檔案中。

-t 列出檔案檔案的內容,查看已經備份了哪些檔案。

-u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最後。

-x 從檔案檔案中釋放檔案。

3.2 輔助選項:

-b 該選項是為磁帶機設定的,其後跟一數字,用來說明區塊的大小,系統預設值為20(20×512 bytes)。

-f 使用檔案檔案或設備,這個選項通常是必選的。

-k 保存已經存在的檔案。例如把某個檔案還原,在還原的過程中遇到相同的檔案,不會進行覆蓋。

-m 在還原檔案時,把所有檔案的修改時間設定為。

-M 創建多卷的檔案檔案,以便在幾個磁碟中存放。

-v 詳細報告tar處理的檔案信息。如無此選項,tar不報告檔案信息。

-w 每一步都要求確認。

-j 代表使用‘bzip2’程式進行檔案的壓縮

-J代表調用“xz”程式進行檔案的壓縮(但在RHEL5的1.53上面無法使用,在RHEL6的2.23上面可以使用)

-z 用gzip來壓縮/解壓縮檔案,加上該選項後可以將檔案檔案進行壓縮,但還原時也一定要使用該選項進行解壓縮。

-A,--catenate,--concatenate

將一存檔與已有的存檔合併

-d,--diff,--compare

比較存檔與當前檔案的不同之處

--delete

從存檔中刪除

其他參數

--atime-preserve

不改變轉儲檔案的存取時間

-b,--block-size N

指定塊大小為 Nx512 位元組(預設時 N=20)

-B,--read-full-blocks

讀取時重組塊(???!!!)

-C,--directory DIR

轉到指定的目錄

--checkpoint

讀取存檔時顯示目錄名

-f,--file [HOSTNAME:]F

指定存檔或設備 (預設為 /dev/rmt0)

--force-local

強制使用本地存檔,即使存在克隆

-F,--info-script F --new-volume-script F

在每個磁碟結尾使用腳本 F (隱含 -M)

-G,--incremental

建立老 GNU 格式的備份

-g,--listed-incremental F

建立新 GNU 格式的備份

-h,--dereference

不轉儲動態連結,轉儲動態連結指向的檔案。

-i,--ignore-zeros

忽略存檔中的 0 位元組塊(通常意味著檔案結束)

--ignore-failed-read

當遇上不可讀檔案時不要以非零值退出

-k,--keep-old-files

保存現有檔案;從存檔中展開時不進行覆蓋

-K,--starting-file F

從存檔檔案 F 開始

-l,--one-file-system

在本地檔案系統中創建存檔

-L,--tape-length N

在寫入 N*1024 個位元組後暫停,等待更換磁碟

-m,--modification-time

當從一個檔案中恢復檔案時,不使用新的時間標籤

-M,--multi-volume

建立多卷存檔,以便在幾個磁碟中存放

-N,--after-date DATE,--newer DATE

僅存儲時間較新的檔案

-o,--old-archive,--portability

以 V7 格式存檔,不用 ANSI 格式

-O,--to-stdout

將檔案展開到標準輸出

-p,--same-permissions,--preserve-permissions

展開所有保護信息

-P,--absolute-paths

不要從檔案名稱中去除 '/'

--preserve

like -p -s

與 -p -s 相似

-R,--record-number

顯示信息時同時顯示存檔中的記錄數

--remove-files

建立存檔後刪除源檔案

-s,--same-order,--preserve-order

為解壓至匹配歸檔排序名稱

--same-owner

展開以後使所有檔案屬於同一所有者

-S,--sparse

高效處理

-T,--files-from F

從檔案中得到要展開或要創建的檔案名稱

--null

讀取空結束的檔案名稱,使 -C 失效

--totals

顯示用 --create 參數寫入的總位元組數

-v,--verbose

詳細顯示處理的檔案

-V,--label NAME

為存檔指定卷標

--version

顯示 tar 程式的版本號

-w,--interactive,--confirmation

每個操作都要求確認

-W,--verify

寫入存檔後進行校驗

--exclude FILE

不把指定檔案包含在內

-X,--exclude-from FILE

從指定檔案中讀入不想包含的檔案的列表

-y,--bzip2,--bunzip2

用 bzip2 對存檔壓縮或解壓

-Z,--compress,--uncompress

用 compress 對存檔壓縮或解壓

-z,--gzip,--ungzip

用 gzip 對存檔壓縮或解壓

--use-compress-program PROG

用 PROG 對存檔壓縮或解壓 ( PROG 需能接受 -d 參數)

--block-compress

為便於磁碟存儲,按塊記錄存檔

-[0-7][lmh]

指定驅動器和密度[低中高]

例如:

將當前目錄下所有.txt檔案打包並壓縮歸檔到檔案this.tar.gz,我們可以使用

1.

將當前目錄下所有.txt檔案打包並壓縮歸檔到檔案this.tar.gz,我們可以使用

tar zcvf this.tar.gz ./*.txt

2.將當前目錄下的this.tar.gz中的檔案解壓到當前目錄我們可以使用

tar xzvf this.tar.gz ./

在windows下支持TAR格式的軟體有WinMount等。

套用示例

tar -cvf home_backup.tar /home

可以將/home目錄下的所有檔案打包入home_backup.tar檔案中。理解這個命令時,請注意“home_backup.tar”實際上是-f選項的參數。tar默認記錄相對路徑,即使給出的是絕對路徑,也會自動將代表根目錄的“/”去掉,所以,在這個例子中,使用“/home”和“home”是相同的。要想使用絕對路徑,請加上“P”選項,但一般不推薦使用絕對路徑,原因之一是可能導致tar炸彈攻擊。

cd /home tar -cvf home_backup.tar *

這也是一種製作備份的方法,但是不推薦這樣做。因為tar在默認解壓時,會將檔案直接輸出到當前目錄下,而不會新建並輸出到一個名為home的子目錄,令到當前目錄顯得很凌亂。這也是一種形式的tar炸彈攻擊。

tar -tf home_backup.tar

列出home_backup.tar檔案里已被打包的檔案。此時僅僅顯示檔案名稱。如果加上“v”,則能列出許可權、所有者、大小、時間、檔案名稱等信息。為防止tar炸彈攻擊,應該養成解壓前查看tar檔案內容的好習慣。

tar -xvf home_backup.tar

在當前目錄下解壓home_back.tar。解壓後的檔案,其訪問許可權得到保留;其所有者是執行tar命令的用戶,如果tar的執行者是root,則所有者是檔案原來的所有者。 解壓前,最好先查看tar檔案的內容,以決定是否需要新建一個臨時子目錄安放。

tar -xvf home_backup.tar home/test.c

指定解壓出test.c這個檔案。解壓過程中會自動創建home這個子目錄。

相關詞條

相關搜尋

熱門詞條

聯絡我們