Linux壓縮打包tar命令總結

 

 

命令簡介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.gzxx. 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
............................................................

 

clip_image001[1]

 

 

此時就會在當前目錄下/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

相關文章
相關標籤/搜索