day14-Linux打包压缩

2019-08-14  本文已影响0人  恩楠

常用的压缩工具

格式 压缩工具
.zip zip压缩工具(*)
.gz gzip压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩 (*)
.tar.bz2 先使用tar命令归档打包,然后使用bzip压缩 (*)

1. gzip工具
gzip:打包与压缩,仅对文件有效。
新建一个文件wu.txt,文件内容为Hello

[root@ennan ~]# echo "Hello" > wu.txt

把文件打包,源文件会消失

[root@ennan ~]# yum install gzip
[root@ennan ~]# gzip wu.txt 
[root@ennan ~]# ll
total 4
-rw-r--r--. 1 root root 33 Aug 13 20:38 wu.txt.gz

可以通过zcat查看压缩文件内容

[root@ennan ~]# zcat wu.txt.gz 
Hello

-d选项可为文件解压,解压后压缩包消失。

[root@ennan ~]# gzip -d wu.txt.gz 
[root@ennan ~]# ll
total 4
-rw-r--r--. 1 root root 6 Aug 13 20:38 wu.txt
[root@ennan ~]# 

应用场景,让某个文件快速关闭和启用
[root@ennan yum.repos.d]# gzip CentOS-Vault.repo
[root@ennan yum.repos.d]# gzip -d CentOS-Vault.repo


zip工具
压缩文件

[root@ennan ~]# yum install zip unzip
# 压缩文件
[root@ennan ~]# zip test.zip test.txt 
  adding: test.txt (deflated 56%)
[root@ennan ~]# ll
total 8
-rw-r--r--. 1 root root 979 Aug 13 10:20 test.txt
-rw-r--r--. 1 root root 599 Aug 13 10:22 test.zip
# 递归压缩,把dir目录和wu.txt文件都压缩到dir.zip中
[root@ennan ~]# zip -r dir.zip dir/ wu.txt 
  adding: dir/ (stored 0%)
  adding: dir/wu.txt (stored 0%)
  adding: dir/test/ (stored 0%)
  adding: dir/hello.txt (deflated 56%)
  adding: wu.txt (stored 0%)

查看包内容

[root@ennan ~]# unzip -l dir.zip 
Archive:  dir.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-13-2019 20:58   dir/
        7  08-13-2019 20:57   dir/wu.txt
        0  08-13-2019 20:57   dir/test/
      979  08-13-2019 20:57   dir/hello.txt
        6  08-13-2019 20:38   wu.txt
---------                     -------
      992                     5 files

解压文件

# 解压到当前目录
[root@ennan ~]# unzip dir.zip 
Archive:  dir.zip
   creating: dir/
 extracting: dir/wu.txt              
   creating: dir/test/
  inflating: dir/hello.txt           
 extracting: wu.txt     
# 解压到/opt目录下
[root@ennan ~]# unzip dir.zip -d /opt/
Archive:  dir.zip
   creating: /opt/dir/
 extracting: /opt/dir/wu.txt         
   creating: /opt/dir/test/
  inflating: /opt/dir/hello.txt      
 extracting: /opt/wu.txt  

tar工具
压缩

# 以gzip的方式压缩文件
[root@MiWiFi-R3L-srv ~]# tar czf test.tar.gz dir dir.txt 
# 以bz2的方式压缩文件
[root@MiWiFi-R3L-srv ~]# tar cjf test.tar.bz2 test test2 dir.txt 

查看压缩文件

# 不论查看何种类型的压缩文件都是用tf选项
[root@MiWiFi-R3L-srv ~]# tar tf test.tar.gz 
dir/
dir.txt
[root@MiWiFi-R3L-srv ~]# tar tf test.tar.bz2 
test/
test2/
dir.txt

解压文件

# 不论解压何种类型的文件,都使用xf选项
[root@MiWiFi-R3L-srv ~]# tar xf test.tar.gz 
[root@MiWiFi-R3L-srv ~]# tar xf test.tar.bz2
# -C可指定解压的目录 
[root@MiWiFi-R3L-srv ~]# tar xf test.tar.gz -C /opt

打包/tmp下所有文件

[root@MiWiFi-R3L-srv ~]# find /var/log -type f | xargs tar czf log.tar.gz
tar: Removing leading `/' from member names
[root@MiWiFi-R3L-srv ~]# tar tf log.tar.gz 
var/log/tuned/tuned.log
var/log/audit/audit.log
var/log/cron
var/log/messages
var/log/yum.log
var/log/boot.log
var/log/wtmp

打包链接文件,打包链接文件的真实文件

[root@xuliangwei /]# tar czfh local.tar.gz
etc/rc.local

压缩时,排除文件

# 压缩/etc排除单个文件
[root@MiWiFi-R3L-srv ~]# tar czf etc.tar.gz /etc/ --exclude=etc/services
# 压缩/etc排除多个文件
[root@MiWiFi-R3L-srv ~]# tar czf etc.tar.gz /etc/ --exclude=etc/services --exclude=etc/shadow
# 将要排除的文件写入文本,通过X选项排除
[root@MiWiFi-R3L-srv ~]# cat hello.txt 
/etc/passwd
/etc/passwd-
/etc/locale.conf
/etc/hostname
/etc/.updated
/etc/aliases.db
/etc/vimrc
/etc/wgetrc
[root@MiWiFi-R3L-srv ~]# tar czXf hello.txt etc.tar.gz /etc/
tar: Removing leading `/' from member names

数据备份与恢复

# 环境准备
[root@MiWiFi-R3L-srv ~]# yum install mariadb-server
[root@MiWiFi-R3L-srv ~]# systemctl start mariadb
[root@MiWiFi-R3L-srv ~]# mkdir /backup
# mysql备份与恢复
[root@MiWiFi-R3L-srv ~]# tar czf /backup/mysql.tar.gz /var/lib/mysql/
tar: Removing leading `/' from member names
tar: /var/lib/mysql/mysql.sock: socket ignored
[root@MiWiFi-R3L-srv ~]# tar xf /backup/mysql.tar.gz -C /
# mysql备份与恢复
[root@MiWiFi-R3L-srv ~]# cd /var/lib/mysql/
[root@MiWiFi-R3L-srv mysql]# tar czf /backup/mysql.tar.gz *
[root@MiWiFi-R3L-srv mysql]# tar tf /backup/mysql.tar.gz 
[root@MiWiFi-R3L-srv mysql]# tar xf /backup/mysql.tar.gz -C /var/lib/mysql/
上一篇 下一篇

猜你喜欢

热点阅读