tar 命令詳解

weixin_34321977發表於2012-04-25

tar
格式: tar [選項] [檔案目錄列表]
功能: 對檔案目錄進行打包備份
選項:
-c 建立新的歸檔檔案
-r 向歸檔檔案末尾追加檔案
-x 從歸檔檔案中解出檔案
-O 將檔案解開到標準輸出
-v 處理過程中輸出相關資訊
-f 對普通檔案操作
-z 呼叫gzip來壓縮歸檔檔案,與-x聯用時呼叫gzip完成解壓縮
-Z 呼叫compress來壓縮歸檔檔案,與-x聯用時呼叫compress完成解壓縮

1.用tar打包一個目錄下的檔案:#tar -cvf /mnt/lgx/a1.doc
生成一個以.tar為副檔名的打包檔案

2.用tar解開打包檔案:#tar -xvf /mnt/lgx/a1.doc.tar
通常情況下,tar打包與gzip(壓縮)經常聯合使用。方法:
首先用tar打包,如:#tar -cvf /mnt/lgx/a1.doc (產生a1.doc.tar檔案)
然後用gzip壓縮a1.doc.tar檔案,如:#gzip /mnt/lgx/a1.doc.tar (產生a1.doc.tar.gz檔案)
3.解壓a1.doc.tar.gz檔案
方法1:
#gzip -dc /mnt/lgx/a1.doc.tar.gz (產生a1.doc.tar檔案)
#tar -xvf /mnt/lgx/a1.doc.tar (產生a1.doc檔案)
這兩次命令也可使用管道功能,把兩個命令合二為一:
#gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf
方法2:使用tar提供的自動呼叫gzip解壓縮功能
#tar -xzvf /mnt/lgx/a1.doc.tar.gz
經過tar打包後,也可用compress命令壓縮(注:gzip比compress壓縮更加有效),產生一個以.tar.Z的檔案,在解包時,可先用 “uncompress 檔名”格式解壓,然後用“tar -xvf 檔名”解包。也可直接呼叫“tar -Zxvf 檔名”解包。


tar命令詳解(很好的中文說明)
怎樣使用tar命令打包(備份)檔案?
A:The syntax of tar is:
tar [options][files]
The options used most often with tar are as follows:
c Creates a new backup,overwriting any files already on the backup destination.
x Extracts files from backup media.
t Lists the contents of backup media.
v Displays the name of each file being processed.
f Creates backups on a specified device.
u Adds files to the backup if they are not already there,or if they have been modified since they were last written on the backup.
步驟:
1)估算打包檔案的大小,確定使用檔案媒體(archive media)的空間,用命令du -s
例如:
$ lf
a.out* fork.c mbox time.c
atoi.c int.c memcpy.c vi
$ du -s
296 .
$
該例顯示的296代表the total number of 512-byte blocks,計算:512*296/1024=148kilobytes.
2)製作備份,用命令tar cvf /dev/fd0135ds18 .(將該目錄下的所有內容備份到1.44英寸軟盤中 where c causes a new backup to be created,v causes each file to be displayed as the backing up takes place,and f causes the subsequent argument–/dev/fd0135ds18 to be the destination of the backup.)
注:平時硬碟上的備份,我們一般用命令tar cvf filename.tar .
例如:
$ tar cvf wuyd.tar .
a ./.profile 2 tape blocks
a ./.lastlogin 0 tape blocks
a ./mbox 10 tape blocks
a ./fork.c 2 tape blocks
a ./memcpy.c 1 tape blocks
a ./.sh_history 3 tape blocks
a ./a.out 91 tape blocks
a ./time.c 1 tape blocks
a ./vi 169 tape blocks
a ./int.c 1 tape blocks
a ./atoi.c 1 tape blocks
tar: same as archive file: ./wuyd.tar
a ./.scoadmin.pref 1 tape blocks
$ lf
a.out* fork.c mbox time.c wuyd.tar
atoi.c int.c memcpy.c vi
我們還可以用命令tar cvf /dev/fd0135ds18 ./filename將該目錄下的名為filename的檔案備份到archive media中
怎樣列出tar文件的內容?
A:tar tvf /dev/fd0135ds18
tar tvf filename.tar
例如:
$ tar tvf wuyd.tar
tar: blocksize = 20
rw——-203/50 896 Sep 17 15:07 2003 ./.profile
r——–203/21 0 Sep 24 19:49 2003 ./.lastlogin
rw——-203/50 4720 Sep 21 11:17 2003 ./mbox
rw-r–r–203/50 583 Sep 17 15:27 2003 ./fork.c
rw-r–r–203/50 218 Sep 17 20:22 2003 ./memcpy.c
rw——-203/50 1474 Sep 24 20:26 2003 ./.sh_history
rwxr-xr-x203/50 46224 Sep 22 21:00 2003 ./a.out
rw-r–r–203/50 341 Sep 19 09:02 2003 ./time.c
rw-r–r–203/50 86283 Sep 21 09:14 2003 ./vi
rw-r–r–203/50 93 Sep 21 10:53 2003 ./int.c
rw-r–r–203/50 144 Sep 22 21:00 2003 ./atoi.c
rw-r–r– 0/3 41 Sep 23 20:34 2003 ./.scoadmin.pref
$
怎樣從tar文件中匯出檔案?
A:tar xvf /dev/fd0135ds18
tar xvf filename.tar
例如:
$ mkdir uu;cp wuyd.tar ./uu
$ lf
a.out* fork.c mbox time.c vi
atoi.c int.c memcpy.c uu/ wuyd.tar
$ cd uu
$ tar xvf wuyd.tar
tar: blocksize = 20
x ./.profile, 896 bytes, 2 tape blocks
x ./.lastlogin, 0 bytes, 0 tape blocks
x ./mbox, 4720 bytes, 10 tape blocks
x ./fork.c, 583 bytes, 2 tape blocks
x ./memcpy.c, 218 bytes, 1 tape blocks
x ./.sh_history, 1474 bytes, 3 tape blocks
x ./a.out, 46224 bytes, 91 tape blocks
x ./time.c, 341 bytes, 1 tape blocks
x ./vi, 86283 bytes, 169 tape blocks
x ./int.c, 93 bytes, 1 tape blocks
x ./atoi.c, 144 bytes, 1 tape blocks
x ./.scoadmin.pref, 41 bytes, 1 tape blocks
$
我們可用命令tar xvf /dev/fd0135ds18 ./filename匯出archive media中的單個檔案
例如:
$ lf
wuyd.tar
$ tar xvf wuyd.tar ./time.c
tar: blocksize = 20
x ./time.c, 341 bytes, 1 tape blocks
$ lf
time.c wuyd.tar
$
怎樣使用tar命令提供的簡寫形式?
A:
$ more /etc/default/tar
# @(#) def135.src 25.2 94/07/25
#
# Copyright © 1987-1994 The Santa Cruz Operation, Inc.
# All Rights Reserved.
# The information in this file is provided for the exclusive use of
# the licensees of The Santa Cruz Operation, Inc. Such users have the
# right to use, modify, and incorporate this code into other products
# for purposes authorized by the license agreement provided they include
# this notice and the associated copyright notice with any such product.
# The information in this file is provided “AS IS” without warranty.
#
# default/tar - archive devices: tar©
#
# device block size tape
#
archive0=/dev/rfd048ds9 18 360 n
archive1=/dev/rfd148ds9 18 360 n
archive2=/dev/rfd096ds15 10 1200 n
archive3=/dev/rfd196ds15 10 1200 n
# archive4=/dev/rfd096ds9 18 720 n
archive4=/dev/rfd0135ds9 18 720 n
archive5=/dev/rfd1135ds9 18 720 n
# archive5=/dev/rfd196ds9 18 720 n
archive6=/dev/rfd0135ds18 18 1440 n
archive7=/dev/rfd1135ds18 18 1440 n
archive8=/dev/rct0 20 0 y
archive9=/dev/rctmini 20 0 y
archive10=/dev/rdsk/fp03d 18 720 n
archive11=/dev/rdsk/fp03h 18 1440 n
archive12=/dev/rdsk/fp03v21 10 20330 n
#
# The default device in the absence of a numeric or “-f device” argument
archive=/dev/rfd0135ds18 18 1440 n
$
從上面可以看出4代表/dev/rfd0135ds9裝置,而預設的裝置是/dev/rfd0135ds18,所以tar xvf /dev/rfd0135ds9 ./filename可以簡寫為tar xv4 ./filename,而 tar cvf /dev/fd0135ds18 .可以簡寫為tar cv。

相關文章