tar命令
tar命令
可以為linux的文件和目錄創建檔案。利用tar,可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創建檔案,現在,用戶可以在任何設備上創建檔案。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對於備份文件或將幾個文件組合成為一個文件以便於網絡傳輸是非常有用的。
首先要弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。
為什么要區分這兩個概念呢?這源於Linux中很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然后再用壓縮程序進行壓縮(gzip bzip2命令)。
語法
tar(選項)(參數)
參數
文件或目錄:指定要打包的文件或目錄列表。
選項
-A或--catenate:新增文件到以存在的備份文件; -B:設置區塊大小; -c或--create:建立新的備份文件; -C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。 -d:記錄文件的差別; -x或--extract或--get:從備份文件中還原文件; -t或--list:列出備份文件的內容; -z或--gzip或--ungzip:通過gzip指令處理備份文件; -Z或--compress或--uncompress:通過compress指令處理備份文件; -f<備份文件>或--file=<備份文件>:指定備份文件; -v或--verbose:顯示指令執行過程; -r:添加文件到已經壓縮的文件; -u:添加改變了和現有的文件到已經存在的壓縮文件; -j:支持bzip2解壓文件; -v:顯示操作過程; -l:文件系統邊界設置; -k:保留原有文件不覆蓋; -m:保留文件不被覆蓋; -w:確認壓縮文件的正確性; -p或--same-permissions:用原來的文件權限還原文件; -P或--absolute-names:文件名使用絕對名稱,不移除文件名稱前的“/”號; -N <日期格式> 或 --newer=<日期時間>:只將較指定日期更新的文件保存到備份文件里; --exclude=<范本樣式>:排除符合范本樣式的文件。
實例
將文件全部打包成tar包:
[hx@centos8 ~]$ touch test{1,2,3,4,5}.txt #創建test1.txt,test2.txt......test5.txt這幾個文件
[hx@centos8 ~]$ ls
learn test1.txt test2.txt test3.txt test4.txt test5.txt
[hx@centos8 ~]$ tar -cvf test.tar test*.txt #打包當前目錄所有開頭為test,結尾為txt的文件
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[hx@centos8 ~]$ ls
learn test1.txt test2.txt test3.txt test4.txt test5.txt test.tar
[hx@centos8 ~]$ tar -zcvf test.tar.gz test*.txt #打包文件並以gzip格式壓縮文件
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[hx@centos8 ~]$ ls
learn test1.txt test2.txt test3.txt test4.txt test5.txt test.tar test.tar.gz
[hx@centos8 ~]$ tar -jcvf test.tar.bz2 test*.txt #打包文件並以bzip2格式壓縮文件
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt
[hx@centos8 ~]$ ls
learn test1.txt test2.txt test3.txt test4.txt test5.txt test.tar test.tar.bz2 test.tar.gz
在選項f
之后的文件檔名是自己取的,習慣上都用 .tar 來作為辨識(Linux實際上不按后綴名區分文件格式,所以只要你願意命名為阿貓阿狗都行)。
如果加z
選項,則以.tar.gz或.tgz來代表gzip壓縮過的tar包;
如果加j
選項,則以.tar.bz2來作為tar包名。
查閱上述tar包內有哪些文件(要查閱log.tar.gz包內的文件時,就得要加上z
這個選項了。)
在預設的情況下,我們可以將壓縮檔在任何地方解開的(絕對路徑和相對路徑的區別而已)
將tar內的文件解壓到指定目錄(准確的說應該叫還原):