1. 程式人生 > >02-Linux系統壓縮打包

02-Linux系統壓縮打包

tar zip

壓縮的好處主要有:

節省磁盤空間占用率
節省網絡傳輸帶寬消耗
網絡傳輸更加快捷

Linux系統常見的後綴名所對應的壓縮工具

.gz gzip //壓縮工具壓縮的文件
.bz2 bzip2 //壓縮工具壓縮的文件
.tar tar //tar沒有壓縮功能,只是把一個目錄合並成一個文件
.tar.gz //先使用tar打包,然後使用gzip壓縮歸檔
.tar.bz2 //先使用tar打包,然後使用bzip壓縮歸檔

註意:
1.Linux下常用壓縮文件以.tar.gz結尾.
2.Linux下壓縮文件必須帶後綴.

ZIP壓縮工具

zip是壓縮工具,unzip是解壓縮工具

//壓縮文件為zip包
[root@localhost ~]# zip  filename.zip  filename 

//壓縮目錄為zip包  
[root@localhost ~]# zip -r  dir.zip dir/

//解壓zip文件包             
[root@localhost ~]# unzip  filename.zip

TAR壓縮工具

語法:tar [-zjxcvfpP] filename 
c   //創建新的歸檔文件
x   //對歸檔文件解包
t   //列出歸檔文件裏的文件列表
v   //輸出命令的歸檔或解包的過程
f   //指定包文件名,多參數f寫最後
C   //指定解壓目錄位置
z   //使用gzip壓縮歸檔後的文件(.tar.gz)
j   //使用bzip2壓縮歸檔後的文件(.tar.bz2)
J   //使用xz壓縮歸檔後的文件(tar.xz)
X   //排除多個文件(寫入需要排除的文件名稱)
h   //打包軟鏈接
**--exclude   //在打包的時候寫入需要排除文件或目錄**

1.將文件或目錄進行打包壓縮

//以gzip方式打包壓縮
tar czf  test.tar.gz  test/ test2/

//以bz2方式壓縮 
tar cjf  test.tar.bz2 dir.txt dir/

//打包鏈接文件,打包鏈接文件的真實文件
[root@localhost ~]# cd /
[root@localhost /]# tar czfh local.tar.gz  etc/rc.local

//打包/tmp下所有文件
[root@localhost ~]# cd /
[root@localhost /]# find tmp/ -type f |xargs tar czf tmp.tar.gz        
//打包/tmp下所有文件
[root@localhost /]# tar czf tmp.tar.gz | xargs find tmp/ -type f
//打包/tmp下所有文件
[root@localhost /]# tar czf tmp.tar.gz `find tmp/ -type f`

2.排除文件, 並打包壓縮

//排除單個文件
[root@localhost /]#  tar czf etc.tar.gz --exclude=etc/services etc/

//排除多個文件
[root@localhost /]# tar czf etc.tar.gz --exclude=etc/services --exclude=etc/rc.local etc/

//將需要排除的文件寫入文件中
[root@localhost /]# cat paichu.list
etc/services
etc/rc.local
etc/rc.d/rc.local
//指定需要排除的文件列表, 最後進行打包壓縮
[root@localhost /]# tar czfX etc.tar.gz paichu.list etc/

3.查看壓縮文件

//查看壓縮包內容和解壓
[root@xuliangwei /]# tar tf  test.tar.gz

4.解壓縮文件

//排除單個文件
[root@localhost /]# tar czf etc.tar.gz --exclude=etc/services etc/

//排除多個文件
[root@localhost /]# tar czf etc.tar.gz --exclude=etc/services --exclude=etc/rc.local etc/

//將需要排除的文件寫入文件中
[root@localhost /]# cat paichu.list
etc/services
etc/rc.local
etc/rc.d/rc.local
//指定需要排除的文件列表, 最後進行打包壓縮
[root@localhost /]# tar czfX etc.tar.gz paichu.list etc/

TAR實踐案例

案例1 mysql物理備份及恢復

[root@localhost ~]# tar -cJf /backup/mysql.tar.xz /var/lib/mysql
[root@localhost ~]# tar -xf /backup/mysql.tar.xz -C /

案例2 mysql物理備份及恢復

[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# tar -cJf /backup/mysql.tar.xz *
[root@localhost mysql]# tar -tf /backup/mysql.tar.xz
[root@localhost mysql]# tar -xf /backup/mysql.tar.xz -C /var/lib/mysql

案例3 host A /etc (海量小文件) --> host A /tmp

[root@localhost ~]# tar -czf - /etc |tar -xzf - -C /tmp

案例4 host A /etc (海量小文件) --> host B /tmp

//常規方法
[root@localhost ~]# scp -r /etc 192.168.69.113:/tmp

//建議方法:

//接收B主機, 需要監聽端口
[root@hostB ~]# systemctl stop firewalld.service 
[root@hostB ~]# nc -l 8888 |tar -xzf - -C /tmp
//發送方A主機
[root@hostA ~]# tar -czf - /etc | nc 192.168.69.113 8888
tar: Removing leading `/‘ from member names

02-Linux系統壓縮打包