### 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包:
~~~
tar -cvf log.tar log2012.log 僅打包,不壓縮!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 壓縮
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 壓縮
~~~
在選項f之后的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
* 如果加z選項,則以.tar.gz或.tgz來代表gzip壓縮過的tar包;
* 如果加j選項,則以.tar.bz2來作為tar包名。
查閱上述tar包內有哪些文件:
~~~
tar -ztvf log.tar.gz
~~~
由于我們使用 gzip 壓縮的log.tar.gz,所以要查閱log.tar.gz包內的文件時,就得要加上z這個選項了。
**將tar包解壓縮:**
~~~
tar -zxvf /opt/soft/test/log.tar.gz
~~~
在預設的情況下,我們可以將壓縮檔在任何地方解開的。
只將tar內的部分文件解壓出來:
~~~
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
~~~
我可以透過tar -ztvf來查閱 tar 包內的文件名稱,如果單只要一個文件,就可以透過這個方式來解壓部分文件!
文件備份下來,并且保存其權限:
~~~
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
~~~
這個-p的屬性是很重要的,尤其是當您要保留原本文件的屬性時。
在文件夾當中,比某個日期新的文件才備份:
~~~
tar -N "2012/11/13" -zcvf log17.tar.gz test
~~~
備份文件夾內容的時候排除部分文件:
~~~
tar --exclude scf/service -zcvf scf.tar.gz scf/*
~~~
其實最簡單的使用 tar 就只要記憶底下的方式即可:
* 壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱
* 查 詢:tar -jtv -f filename.tar.bz2
* 解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
- 目錄
- Linux目錄結構
- 文件和目錄管理
- 創建文件
- touch命令
- ln命令
- 文件列表
- 查看內容
- ls命令
- ll命令
- stat 命令
- 文件查找
- updatedb命令
- locate/slocate命令
- whereis命令
- which命令
- find命令
- 文件壓縮
- tar命令
- 目錄管理
- mkdir命令
- pwd命令
- tail命令
- 監視文件
- 文件復制
- cp命令
- 壓縮解壓
- zip命令
- unzip命令
- 系統管理
- crontab命令
- crontab問題
- crontab日志
- crontab原理
- 系統計劃任務
- 用戶計劃任務
- 調用ThinkPHP控制器
- ntsysv命令
- chkconfig命令
- export命令
- 修改PATH環境變量
- ps命令
- man
- 主要方法
- pstree命令
- service命令
- kill命令
- ulimit命令
- 綜合命令
- 編譯文件
- make命令
- makefile文件
- 設備管理
- mount命令
- 用戶和工作組管理
- groupadd命令
- passwd命令
- useadd命令
- groups命令
- chage命令
- whoami命令
- 查看用戶組下所有用戶
- 軟件安裝
- rpm命令
- 系統監測
- free命令
- 硬件配置
- 系統監控
- top命令
- ps_mem
- pstree
- 文件傳輸
- web服務
- Nginx
- 文件下載
- wget命令
- 系統幫助
- whatis命令
- man命令
- shell命令
- shell變量
- sh命令
- source命令
- test命令
- 表達式
- 邏輯運算符
- date命令
- declare命令
- 軟件安裝
- yum命令
- 安裝
- 系統服務
- systemctl命令
- service
- 環境變量
- Linux 中環境變量設置
- 網絡管理
- iptables命令
- netstat命令
- 查看端口占用
- 常用端口說明
- 系統安全
- getenforce
- 磁盤空間
- df命令