命令簡介html
在Linux系統的維護、管理中,tar命令是一個使用頻率很高的命令,tar命令的功能主要是將衆多文件打包成一個tar文件並壓縮,而且能保持文件的權限屬性。tar其實最開始是用來作磁帶備份存盤的,tar是tape archive的簡稱。後面擴展到不單單侷限於磁帶備份存盤。也能存放到文件系統中。tar命令版本衆多,下面整理了一些經常使用的參數,具體以實際版本爲準。mysql
命令參數sql
參數服務器 |
參數描述app |
-cide |
建立新的檔案文件spa |
-Ccode |
指定到要解壓到的目錄。注意:該目錄必須存在orm |
-fhtm |
指定打包的文件名。在f以後要當即接打包文件名!不要再加參數! |
-x |
解壓 |
-O |
將文件解壓到標準輸出 |
-p |
使用原文件的原來屬性 |
-P |
建立歸檔文件,使用絕對路徑 |
-t |
列出檔案文件中的內容 |
-r |
向壓縮歸檔文件末尾追加文件 |
-u |
更新原壓縮包中的文件 |
-v |
顯示詳細過程 |
-z |
使用gzip壓縮,通常格式爲xx.tar.gz或xx. tgz |
-Z |
有compress |
-j |
使用bzip2壓縮,通常格式爲xxx.tar.bz2 |
--exclude |
在壓縮過程當中,排除某個文件 |
--remove-files |
在完成打包後,刪除原文件夾 |
注意事項:
1:在上面的參數中, c/x/t 僅能存在一個!不可同時存在!例如,不可能同時壓縮與解壓縮。
2:-f: 指定打包的文件名,切記,這個參數是最後一個參數(不能再接其它參數),後面只能接打包文件名。
3:參數能夠合併在一塊兒,也能夠單獨分開。以下所示:
#tar -jcvf 2018-10-14.tar.bz2 ./2018-10-11
#tar -j -c -v -f 2018-10-14.tar.bz2 ./2018-10-11
使用示例
--打包當前目錄下全部後綴爲log類型的文件
[root@DB-Server logs]# tar -cvf backup_log.tar ./*.log
--查看打包了那些文件
[root@DB-Server logs]# tar -tf backup_log.ta
記住:若是文件是壓縮格式,如何查看打包了那些文件呢? 是否須要參數z或f呢? 實際上是不須要參數z或j也是能查看的。
[root@DB-Server logs]# tar -jcvf backup.tar.bz2 ./*.log
[root@DB-Server logs]# tar -tvf backup.tar.bz2
[root@DB-Server logs]# tar -tjvf backup.tar.bz2
[root@DB-Server full]# tar -tjvf full_2018-10-21_00_00_01.tar.bz2
注意:加上參數z或j也沒有錯,暫時不清楚區別。猜想有多是自動進行了解壓.
--查看是否打包了文件incr_2018-10-16_12_00_01.log
[root@DB-Server mysql]# tar -tvf logs.tar.bz2 | grep incr_2018-10-16_12_00_01.log
-rw-r--r-- root/root 118944 2018-10-21 10:16:01 home/mysqlbackup/logs/incr_2018-10-16_12_00_01.log
--解壓打包的backup_log.tar文件
[root@DB-Server logs]# tar -xvf backup_log.tar
--打包壓縮爲bz2格式的文件
[root@DB-Server mysqlbackup]#tar -jcvf 2018-10-20.tar.bz2 ./2018-10-20
注意:使用bz2壓縮的打包文件,後綴能夠爲filename.tar.bz2 或 filenam.tbz兩種格式,視我的喜愛、習慣而定。
--打包壓縮爲gz格式的文件
[root@DB-Server mysqlbackup]#tar -zcvf 2018-10-20.tar.gz ./2018-10-20
注意:使用gzip壓縮的打包文件,後綴能夠爲filename.tgz 或filename.tar.gz兩種格式,視我的喜愛、習慣而定。
--打包壓縮後刪除原文件夾或原文件
[root@DB-Server mysqlbackup]tar -zcvf 2018-10-13.tar.gz /mysql_backup/2018-10-13 --remove-files
#參數remove-files會在/mysql_backup/2018-10-13目錄打包壓縮後,刪除這個原文件夾。
--解壓壓縮格式爲gz格式的打包文件
[root@DB-Server mysqlbackup]# tar -xjvf 2018-10-20.tar.bz2
[root@DB-Server mysqlbackup]# tar -xzvf 2018-10-20.tar.gz
--解壓壓縮文件中的某一個文件
#只要解壓打包壓縮文件中一個文件xtrabackup_checkpoints(絕對路徑打包壓縮)
[root@DB-Server full]# tar -jxvf full_2018-10-21_00_00_01.tar.bz2 \
/mysqlbackup/db_backup/2018-10-22/full/full_2018-10-22_00_00_01/xtrabackup_checkpoints
#相對路徑的打包壓縮文件解壓單個文件
[root@DB-Server mysqlbackup]# tar -xjvf logs.tar.bz2 ./logs/incr_2018-10-13_16_10_01.log
./logs/incr_2018-10-13_16_10_01.log
--打包分片壓縮
# tar -zcvp -f - 2018-10-18/ | split -b 2M -d -a 1 - mysq.tar.gz.
root@DB-Server mysql_db_backup]# tar -zcvpf - 2018-10-18/ | split -b 2M -d -a 1 - mysq.tar.gz.
2018-10-18/
2018-10-18/last_lsn
2018-10-18/incr/
2018-10-18/incr/incr_2018-10-18_23_02_29.tar.bz2
2018-10-18/incr/incr_2018-10-18_23_02_01.tar.bz2
2018-10-18/full/
2018-10-18/full/full_2018-10-17_23_01_33.tar.bz2
[root@DB-Server mysql_db_backup]# ls -lrt
total 15220
drwxr-xr-x. 4 root root 4096 Oct 18 23:01 2018-10-18
drwxr-xr-x. 4 root root 4096 Oct 19 09:16 2018-10-19
-rw-r--r--. 1 root root 35275 Oct 25 10:41 2008.tar.bz2
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.0
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.1
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.2
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.3
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.4
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.5
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.6
-rw-r--r--. 1 root root 856929 Oct 25 11:03 mysq.tar.gz.7
# tar -zcvpf - ./2018-10-18 | split -b 2M - mysq.tar.gz.
--絕對路徑打包壓縮的相關案例
打包相對路徑文件演示
[root@DB-Server db_backup]# ls -lrt
total 16
drwxr-xr-x 2 root root 4096 Oct 21 22:39 2018-10-20
drwxr-xr-x 3 root root 4096 Oct 21 22:39 2018-10-21
[root@DB-Server db_backup]#
#相對路徑壓縮,解壓的時候沒有任何問題
[root@DB-Server db_backup]# tar -jcvf 2018-10-21.tar.bz2 ./2018-10-21
#在當前路徑下面解壓
[root@DB-Server db_backup]# tar -xjvf 2018-10-21.tar.bz2
#解壓到某個路徑下面
[root@DB-Server db_backup]# tar -xjvf 2018-10-21.tar.bz2 -C /mysql/
若是是打包壓縮時使用絕對路徑,這個就相對而言比較麻煩,尤爲是將打包文件在異機(其它服務器)解壓.例如,下面full_2018-10-20_00_00_02.tar.bz2文件是將/mysql/mysql_backup/db_backup/2018-10-21這個目錄下面的全部文件按絕對路徑打包,而後將文件拷貝到這臺服務解壓。輸出信息有「tar: Removing leading `/' from member names」,它是tar刪除了絕對路徑最開始 / 而進行的提示。使用tar對文件打包時,通常不建議使用絕對路徑.
[root@DB-Server mysqlbackup]# ls -lrt
total 683016
-rw-r--r-- 1 root root 698691092 Oct 21 10:13 full_2018-10-20_00_00_02.tar.bz2
drwxr-xr-x 2 root root 12288 Oct 21 21:14 logs
drwxr-xr-x 4 root root 4096 Oct 21 23:07 db_backup
[root@DB-Server mysqlbackup]# pwd
/home/mysqlbackup
[root@DB-Server mysqlbackup]# tar -xjvf full_2018-10-20_00_00_02.tar.bz2
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/
tar: Removing leading `/' from member names
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/xtrabackup_logfile
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/ibdata1
............................................................
此時就會在當前目錄下/home/mysqlbackup 下面生成mysql/mysql_backup/db_backup/2018-10-21等目錄。這個每每不是咱們想要的,可否直接將2018-10-21這個文件夾解壓到當前目錄呢?答案是不行。即便使用參數-C,也依然生成不了咱們想要的。
[root@DB-Server mysqlbackup]# tar -xjvf full_2018-10-20_00_00_02.tar.bz2 -C /home/mysqlbackup/
固然,若是使用-P參數打包絕對路徑文件,那麼解壓的時候,也會按原絕對路徑生成。而不是在當前目錄或指定目錄,生成很深的路徑。
#這樣會按原絕對路徑的方式解壓
[root@DB-Server mysqlbackup]# tar -xjvPf full_2018-10-20_00_00_02.tar.bz2
參考資料:
http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html