Linux 命令之 tar

tar 可以為 Linux 文件和目錄創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar 最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在用戶可以在任何設(shè)備上創(chuàng)建檔案。利用 tar 命令,可以把一堆文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。

首先要弄清兩個概念:打包和壓縮。打包是指將一堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。
為什么要區(qū)分這兩個概念呢?這源于 Linux 中很多壓縮程序只能針對一個文件進(jìn)行壓縮,這樣當(dāng)你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包,然后再用壓縮程序進(jìn)行壓縮。

1、常用選項(xiàng):

選項(xiàng) 幫助
--help 查看幫助
-c, --create 創(chuàng)建一個新的歸檔,也就是備份文件
-f, --file 指定歸檔文件名
-p 保留原文件的文件權(quán)限
-t 列出歸檔文件中的全部內(nèi)容
-v 顯示命令的執(zhí)行過程,詳細(xì)地列出處理的文件
-x 從歸檔中解出文件,即反歸檔
-z 對歸檔文件使用 gzip 進(jìn)行壓縮
--exclude 指定歸檔時需要排除的文件
-g 增量歸檔

2、舉例:

-cvf 打包當(dāng)前目錄中的所有文件,默認(rèn)遞歸全部目錄:
mcdx@ubuntu:~/clipboard$ tar -cvf haha.tar *
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test
-czvf 打包當(dāng)前目錄中的所有文件,并壓縮:
# 排除前面創(chuàng)建的歸檔文件 haha.tar
mcdx@ubuntu:~/clipboard$ tar -czvf haha.tar.gz * --exclude haha.tar 
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test

# 在 Mac 系統(tǒng)中要用下面的格式
tar -czv --exclude haha.tar -f haha.tar.gz *
查看兩個歸檔文件的大?。?/h6>
mcdx@ubuntu:~/clipboard$ ls
b.txt  conf  haha.tar  haha.tar.gz  README.md  test
mcdx@ubuntu:~/clipboard$ du -h haha*
20K     haha.tar
4.0K    haha.tar.gz
-tvf 查看歸檔文件里包含哪些文件:
mcdx@ubuntu:~/clipboard$ tar -ztvf haha.tar.gz
-rw-rw-r-- mcdx/mcdx       172 2018-07-22 10:34 b.txt
drwxrwxr-x mcdx/mcdx         0 2018-07-22 10:34 conf/
-rw-rw-r-- mcdx/mcdx       360 2018-07-22 10:34 conf/gitconfig.txt
-rw-rw-r-- mcdx/mcdx       923 2018-07-22 10:34 conf/sources.list
-rw-rw-r-- mcdx/mcdx      1202 2018-07-22 10:34 conf/python.gitignore
-rw-rw-r-- mcdx/mcdx       799 2018-07-22 10:34 conf/vimrc.txt
-rw-rw-r-- mcdx/mcdx       260 2018-07-22 10:34 conf/requirements.txt
-rw-rw-r-- mcdx/mcdx        11 2018-07-22 10:34 README.md
-rw-rw-r-- mcdx/mcdx       219 2018-07-22 10:34 test
-xzvf 到某個目錄下,將歸檔文件進(jìn)行解檔:
mcdx@ubuntu:~$ mkdir test
mcdx@ubuntu:~$ cd test/
mcdx@ubuntu:~/test$ tar -zxvf ../clipboard/*gz
b.txt
conf/
conf/gitconfig.txt
conf/sources.list
conf/python.gitignore
conf/vimrc.txt
conf/requirements.txt
README.md
test
mcdx@ubuntu:~/test$ tree
.
├── b.txt
├── conf
│   ├── gitconfig.txt
│   ├── python.gitignore
│   ├── requirements.txt
│   ├── sources.list
│   └── vimrc.txt
├── README.md
└── test

1 directory, 8 files
-g 增量歸檔,舉例如下

backinfo 是一個自定義的自動生成的文件,在哪里執(zhí)行此命令,就在哪里生成。吶比如說本次歸檔和下次歸檔之間的時間內(nèi),/var/log 目錄沒變化,那么下次歸檔,就是一個空目錄結(jié)構(gòu);如果此目錄下增加了文件,下次歸檔就會只歸檔增加的文件。

sudo tar -g backinfo -czf $(date +\%H-\%M-\%S).tar.gz /var/log
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容