常用的压缩工具
格式 | 压缩工具 |
---|---|
.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/
网友评论