tar 命令詳解與範例
tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。
tar是需要引數的。
語法:tar [主選項+輔選項] 檔案或者目錄
主選項(執行tar時必須要有下列引數中的至少一個才可執行 ):
-A, --catenate, --concatenate
將一存檔與已有的存檔合併
-c, --create
建立新的存檔
-d, --diff, --compare
比較存檔與當前檔案的不同之處
--delete
從存檔中刪除
-r, --append
附加到存檔結尾
-t, --list
列出存檔中檔案的目錄
-u, --update
僅將較新的檔案附加到存檔中
-x, --extract, --get
從存檔展開檔案
特別注意:在上述引數中, c/x/t 僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。
輔選項:
--atime-preserve
不改變轉儲檔案的存取時間
-b, --block-size N
指定塊大小為 Nx512 位元組(預設時 N=20)
-B, --read-full-blocks
讀取時重組塊
-C, --directory DIR
轉到指定的目錄,展開.tar檔案到指定的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
在不可讀檔案中作 0 標記後再退出
-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
與 -p -s 相似
-R, --record-number
顯示資訊時同時顯示存檔中的記錄數
--remove-files
建立存檔後刪除原始檔
--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
從指定檔案中讀入不想包含的檔案的列表
-j, --bzip2, --bunzip2
用 bzip2 對存檔壓縮或解壓
-Z, --compress, --uncompress
用 compress 對存檔壓縮或解壓
-z, --gzip, --ungzip
用 gzip 對存檔壓縮或解壓
--use-compress-program PROG
用 PROG 對存檔壓縮或解壓 ( PROG 需能接受 -d 引數)
--block-compress
為便於磁碟儲存,按塊記錄存檔
-[0-7][lmh]
指定驅動器和密度[高中低]
範例(以下範例均以root使用者執行):
範例一:將整個 /home 目錄下的檔案全部打包成為 /usr/backup/home.tar
# tar -cvf /usr/backup/home.tar /home <--僅打包,不壓縮
# tar -zcvf /usr/backup/home.tar.gz /home <--打包後,以 gzip 壓縮
# tar -jcvf /usr/backup/home.tar.bz2 /home <--打包後,以 bzip2 壓縮
特別注意:在引數 f 之後的檔案檔名是自己取的,習慣上都用 .tar 來作為辨識。
範例二:查閱上述 /usr/backup/home.tar.gz 檔案內有哪些檔案?
# tar -ztvf /usr/backup/home.tar.gz
由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,就得要加上 z 這個引數了!
範例三:將 /usr/backup/home.tar.gz 檔案解壓縮在 /usr/local/src 底下
方法1:
# cd /usr/local/src
# tar -zxvf /usr/backup/home.tar.gz
方法2:
#tar -zxvf /usr/backup/home.tar.gz -C /usr/local/src/
範例四:在 /tmp 底下,我只想要將 /usr/backup/home.tar.gz 內的 home/root 解開而已
# cd /tmp
# tar -zxvf /usr/backup/home.tar.gz home/root
範例五:將 /home/ 內的所有檔案備份下來,並且儲存其許可權!
# tar -zxvpf /usr/backup/home.tar.gz /home
注意: 這個 -p 的屬性是很重要的,尤其是當要保留原本檔案的屬性時!
在 f 之後要立即接檔案名!不要再加引數!如上例 tar -zxvfp /usr/backup/home.tar.gz就是錯誤的寫法。
範例六:在 /home 當中,比 2007/06/01 新的檔案才備份
# tar -N "2007/06/01" -zcvf home.tar.gz /home
範例七:我要備份 /home, /etc ,但不要 /home/abc
# tar --exclude /home/abc -zcvf myfile.tar.gz /home/* /etc
範例八:將 /home/ 打包後直接解開在 /tmp 底下,而不產生檔案!
# cd /tmp
# tar -cvf - /home | tar -xvf -
要注意的地方在於輸出檔變成 - ,而輸入檔也變成 - 。
範例九:在打包/home之後又新建一個使用者bcd,現也要將其打包加入/usr/backup/home.tar.gz
#tar -zcvrf /usr/backup/home.tar.gz /home/bcd
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
轉貼自
tar命令
tar 檔案是幾個檔案和(或)目錄在一個檔案中的集合。這是建立備份和歸檔的佳徑。
tar 使用的選項有:
-c — 建立一個新歸檔。
-f — 當與 -c 選項一起使用時,建立的 tar 檔案使用該選項指定的檔名;當與
-x 選項
一起使用時,則解除該選項指定的歸檔。
-t — 顯示包括在 tar 檔案中的檔案列表。
-v — 顯示檔案的歸檔進度。
-x — 從歸檔中抽取檔案。
-z — 使用 gzip 來壓縮 tar 檔案。
-j — 使用 bzip2 來壓縮 tar 檔案。
要建立一個 tar 檔案,鍵入:
tar -cvf filename.tar directory/file
可以使用 tar 命令同時處理多個檔案和目錄,方法是將它們逐一列出,並用空格間隔:
tar -cvf filename.tar /home/mine/work /home/mine/school
上面的命令把 /home/mine 目錄下的 work 和 school 子目錄內的所有檔案都放入當前目錄中一個叫做 filename.tar 的新檔案裡。
要列出 tar 檔案的內容,鍵入:
tar -tvf filename.tar
要抽取 tar 檔案的內容,鍵入
tar -xvf filename.tar
這 個命令不會刪除 tar 檔案,但是它會把被解除歸檔的內容複製到當前的工作目錄下,並保留歸檔檔案所使用的任何目錄結構。譬如,如果這個 tar 檔案中包含一個叫做bar.txt 的檔案,而這個檔案包含在 foo/ 目錄中,那麼,抽取歸檔檔案將會導致在你當前的工作目錄中建立foo/ 目錄,該目錄中包含 bar.txt 檔案
tar 預設不壓縮檔案。
要建立一個使用 tar 和 bzip 來歸檔壓縮的檔案,使用 -j 選項:
tar -cjvf filename.tbz file
以上命令建立了一個歸檔檔案,然後將其壓縮為 filename.tbz 檔案。如果你使用
bunzip2 命令為 filename.tbz 檔案解壓,filename.tbz 檔案會被刪除,繼之以filename.tar 檔案。
你還可以用一個命令來擴充套件並解除歸檔 bzip tar 檔案:
tar -xjvf filename.tbz
要建立一個用 tar 和 gzip 歸檔並壓縮的
TAR命令與Gzip命令
Tar可以為檔案和目錄建立檔案。利用tar,使用者可以為某一特定檔案打包(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。
tar最初被用來在磁帶上打包,現在,使用者可以在任何裝置上打包,如軟盤。
利用tar命令,可以把一大堆的檔案和目錄全部打包成一個檔案.
語法:tar [主選項+輔選項] 檔案或者目錄
使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。
主選項:
c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。
r 把要存檔的檔案追加到檔案檔案的末尾。例如使用者已經作好備份檔案,又發現還有一個目錄或是一些檔案忘記備份了,這時可以使用該選項,將忘記的目錄或檔案追加到備份檔案中。
t 列出檔案檔案的內容,檢視已經備份了哪些檔案。
u 更新檔案。就是說,用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最後。
x 從檔案檔案中釋放檔案。
輔助選項:
b 該選項是為磁帶機設定的。其後跟一數字,用來說明區塊的大小,系統預設值為20
(20*512 bytes)。
f 使用檔案檔案或裝置,這個選項通常是必選的。
k 儲存已經存在的檔案。例如我們把某個檔案還原,在還原的過程中,遇到相同的檔案,不會進行覆蓋。
m 在還原檔案時,把所有檔案的修改時間設定為現在。
M 建立多卷的檔案檔案,以便在幾個磁碟中存放。
v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。
w 每一步都要求確認。
例1:把/home目錄下包括它的子目錄全部做備份檔案,備份檔名為usr.tar。
$ tar cvf usr.tar /home
例2:把usr.tar這個備份檔案還原
$ tar xvf usr.tar
例3:檢視usr.tar備份檔案的內容,並以分屏方式顯示在顯示器上。
$ tar tvf usr.tar | more
要將檔案備份到一個特定的裝置,只需把裝置名作為備份檔名。
例4:使用者在/dev/fd0裝置的軟盤中建立一個備份檔案,並將/home 目錄中所有的檔案都拷貝到備份檔案中。
$ tar cf /dev/fd0 /home
要恢復裝置磁碟中的檔案,可使用xf選項:
$ tar xf /dev/fd0
如果使用者備份的檔案大小超過裝置可用的存貯空間,如軟盤,您可以建立一個多卷的tar備份檔案。
M選項指示tar命令提示您使用一個新的存貯裝置,當使用M選項向一個軟碟機進行存檔時,tar命令在一張軟盤已滿的時候會提醒您再放入一張新的軟盤。
這樣您就可以把tar檔案存入幾張磁碟中。
$ tar cMf /dev/fd0 /home
要恢復幾張盤中的檔案,只要將第一張放入軟碟機,然後輸入有x和M選項的tar命令。在必要時您會被提醒放入另外一張軟盤。
$ tar xMf /dev/fd0
磁帶操作:
使用tar命令複製檔案或者目錄樹到單個磁帶。優點:在UNIX系統中都可用。缺點:不知道檔案系統的邊界,全路徑名長不能超過255個字元, 不能複製空目錄或者裝置檔案這樣的特殊檔案,不能用來建立多個磁帶卷。
1.複製檔案到磁帶
1)切換到包含有需要複製檔案的目錄
2)在磁帶驅動器中插入可以寫入的磁帶
3)輸入 tar cvf /dev/rmt/0m filenme filename ...
其中, c (複製)選項複製指定的檔案,v(詳細)選項顯示覆制檔案的資訊,f(檔案)選項後面跟隨的是tar檔案寫入的磁帶裝置名。指定的檔名複製到磁帶,覆蓋磁帶上任何已存在的檔案。
注:使用c選項複製檔案到磁帶將破壞磁帶上已有的任何檔案。如果要保留這些檔案,用r選項。可以使用萬用字元(? *)
4)從驅動器中取出磁帶,將檔名寫在磁帶的標籤上。
2.列出磁帶上的檔案
1)插入磁帶到磁帶驅動器。
2)輸入 tar tvf /dev/rmt/0m
其中, t(列表)選項列出指定的檔案,vv(詳細)選項顯示檔案的全部資訊,f(檔案)選項後面跟隨的是tar檔案寫入的磁帶裝置名。
3.新增檔案到磁帶
1)切換到包含有需要複製檔案的目錄。
2)在磁帶驅動器中插入可以寫入的磁帶
3)輸入 tar rvf /dev/rmt/0m filename filename...
指定的檔案新增到磁帶上已有檔案的後面。
4)從驅動器中取出磁帶,將檔名寫在磁帶的標籤上。
注:如果使用n(不迴繞)選項做為磁帶裝置名的一部分,可以自制多個tar檔案集到磁帶。輸入 tar cvf /dev/rmt/0mn filenae ,當該檔案自制完畢時磁帶不迴繞,下一次使用磁帶時,檔案在當前檔案集的結尾寫入。
4.從磁帶獲取檔案集的結尾寫入
1)切換到包含有需要複製檔案的目錄。
2)在磁帶驅動器中插入磁帶。
3)輸入 tar xvf /dev/rmt/0m
指定驅動器中磁帶上的所有檔案複製到當前目錄中。
從磁帶中獲取單個檔案,輸入 tar xvf /dev/rmt/0m filename1 filename2 ...
從磁帶中展開指定的檔名,放入當前工作目錄。
5.從磁帶上遞迴讀取目錄和子目錄
1)更換目錄到要自制檔案的父目錄
tar xvf /dev/rmt/0m filename
將恢復filename到當前目錄。
2)輸入 tar xvf /dev/rmt/0m directory-name ,從磁帶中遞迴複製該目錄和它的所有子目錄。
gzip命令
減少檔案大小有兩個明顯的好處:
一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間。gzip是在Unix系統中經常使用的一個對檔案進行壓縮和解壓縮的命令,既方便又好用。
語法:gzip [選項] 壓縮(解壓縮)的檔名
各選項的含義:
-c 將輸出寫到標準輸出上,並保留原有檔案。
-d 將壓縮檔案解壓。
-l 對每個壓縮檔案,顯示下列欄位:
壓縮檔案的大小
未壓縮檔案的大小
壓縮比
未壓縮檔案的名字
-r 遞迴式地查詢指定目錄並壓縮其中的所有檔案或者是解壓縮。
-t 測試,檢查壓縮檔案是否完整。
-v 對每一個壓縮和解壓的檔案,顯示檔名和壓縮比。
-num 用指定的數字num調整壓縮的速度,-1或--fast表示最快壓縮方法(低壓縮比),-9或--best表示最慢壓縮方法(高壓縮比)。系統預設值為6。
假設一個目錄/home下有檔案mm.txt、sort.txt、xx.com。
例1:把/home目錄下的每個檔案壓縮成.gz檔案。
$ cd /home
$ gzip *
$ ls
m.txt.gz sort.txt.gz xx.com.gz
例2:解壓縮檔案file.gz
$ gzip -dv file.gz
例3:詳細顯示例1中每個壓縮的檔案的資訊,並不解壓。
$ gzip -l *
compressed uncompr. ratio uncompressed_name
277 445 43.1% mm.txt
278 445 43.1% sort.txt
277 445 43.1% xx.com
$ ls
mm.txt.gz sort.txt.gz xx.com.gz
例4:壓縮一個tar備份檔案,如usr.tar,此時壓縮檔案的副檔名為.tar.gz
$ gzip usr.tar
$ ls
usr.tar.gz