tar命令
-
功能說明:備份檔案
-
用法:tar [選項]… 歸檔及壓縮檔案名 FILE...
-
注意:tar命令選項中可以省略“-”
選項 作用 -c 創建.tar格式的歸檔檔案 -C 展開歸檔時指定目標檔案夾 -f 表示使用歸檔檔案 -t 串列查看歸檔內的檔案 -x 解開.tar格式的包檔案 -z 呼叫gzip程式進行壓碩訓解壓 -j 呼叫bzip2程式進行壓碩訓解壓 -J 呼叫xz程式進行壓碩訓解壓 -r 添加檔案到已經歸檔的檔案 -p 打包時保留檔案及目錄的權限 -v 輸出詳細資訊 --exclude 打包時排除指定的檔案,支配通配符 -X 指定一個檔案,將排除的內容寫到檔案中
檔案歸檔就是把多個檔案先打包成一個檔案,歸檔有一個缺點就是不但不會減小體積,還會增大體積,一般來講,歸檔以后要使用壓縮工具對其執行壓縮操作,歸檔和壓縮通常要結合起來使用,歸檔不會洗掉原檔案的,
示例1:將/etc目錄備份為etc.tar檔案
[root@node1 ~]# tar cf etc.tar /etc/
tar: Removing leading `/' from member names
[root@node1 ~]# ll -h
total 28M
-rw-r--r-- 1 root root 28M Feb 25 17:46 etc.tar
示例2:查看etc.tar檔案中的串列
[root@node1 ~]# tar tf etc.tar
示例3:將etc.tar檔案釋放到當前目錄
[root@node1 ~]# tar xf etc.tar
[root@node1 ~]# ls
etc etc.tar
示例4:將etc.tar檔案釋放到/tmp/newtest目錄中
tar [選項]… 歸檔及壓縮檔案名 [-C 目標目錄]
[root@node1 ~]# mkdir /tmp/new
[root@node1 ~]# tar xf etc.tar -C /tmp/new
[root@node1 ~]# ll /tmp/new/
total 12
drwxr-xr-x 74 root root 8192 Feb 25 12:43 etc
示例5:創建5個檔案將其打包,并將/etc/passwd添加到打包檔案中,
[root@node1 ~]# for i in `seq 5`;do touch $i.txt;done
[root@node1 ~]# ls
1.txt 2.txt 3.txt 4.txt 5.txt etc etc.tar
[root@node1 ~]# tar cf test.tar *.txt
[root@node1 ~]# tar tf test.tar
1.txt
2.txt
3.txt
4.txt
5.txt
5.txt
[root@node1 ~]# tar rf test.tar /etc/passwd
tar: Removing leading `/' from member names
[root@node1 ~]# tar tf test.tar
1.txt
2.txt
3.txt
4.txt
5.txt
etc/passwd
歸檔完成后通常需要壓縮,結合壓縮工具(gzip、bzip2、xz),就能實作壓縮多個檔案了,
示例6:將/var/log下的所有檔案復制到/root目錄,并分別使用gzip、bzip2、xz進行歸檔
[root@node1 ~]# cp -r /var/log/ ./
[root@node1 ~]# du -sh log/
4.1M log/
[root@node1 ~]# tar zcf log.gz log/ #呼叫gzip進行壓縮
[root@node1 ~]# tar jcf log1.bz2 log/ #呼叫bzip2進行壓縮
[root@node1 ~]# tar Jcf log2.xz log/ #呼叫xz進行壓縮
[root@node1 ~]# du -sh *
4.1M log
300K log1.bz2
204K log2.xz
412K log.gz
示例7:創建{a-e}5個txt檔案,并將其打包,但是打包程序中排除a.txt和b.txt
[root@node1 ~]# mkdir /tmp/test
[root@node1 ~]# cd /tmp/test
[root@node1 test]# for i in {a..e};do touch $i.txt;done
[root@node1 test]# ls
a.txt b.txt c.txt d.txt e.txt
[root@node1 test]# tar cf test.tar *.txt --exclude=a.txt --exclude=b.txt
[root@node1 test]# tar tf test.tar
c.txt
d.txt
e.txt
示例8:將root目錄下的所有檔案打包,但排除mp3檔案,
[root@node1 test]# for i in `seq 10`;do touch $i.mp3;done
[root@node1 test]# ls
10.mp3 1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3 7.mp3 8.mp3 9.mp3 a.txt b.txt c.txt d.txt e.txt
[root@node1 test]# tar cf text.tar *.txt --exclude=*.mp3
[root@node1 test]# tar tf text.tar
a.txt
b.txt
c.txt
d.txt
e.txt
示例9:將示例8中的mp3檔案打包,但排除1.mp3、3.mp3、5.mp3
[root@node1 test]# cat >>exclude.txt<<EOF
> 1.mp3
> 3.mp3
> 5.mp3
> EOF
[root@node1 test]# tar cf mp3.tar *.mp3 -X exclude.txt
[root@node1 test]# tar tf mp3.tar
10.mp3
2.mp3
4.mp3
6.mp3
7.mp3
8.mp3
9.mp3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/79177.html
標籤:Linux
上一篇:Linux命令(4)xz命令
下一篇:Linux命令(6)zip命令
