知识就是力量,时间就是生命。这篇文章主要讲述CentOS 文件压缩命令相关的知识,希望能为你提供帮助。
文件压缩打包
压缩包格式【CentOS 文件压缩命令】
文章图片
为什么使用压缩
1.文件或目录过大,需要依靠压缩传输
2.遇到的服务安装包都需要解压
压缩格式及命令
格式 | Linux命令 |
---|---|
.zip | zip |
.gz | gzip |
.tar | tar |
.tar.gz | tar、gzip |
# 1.安装gzip命令
[root@localhost ~]# yum install -y gzip# 2.gzip命令使用
gzip 普通文件名
# 选项:
-r:递归压缩
-d:解压## 举例
[root@localhost ~]# ls
1.txt2.txt3.txtanaconda-ks.cfg
# 压缩文件1.txt
[root@localhost ~]# gzip 1.txt
[root@localhost ~]# ls
1.txt.gz2.txt3.txtanaconda-ks.cfg
# 查看1.txt.gz是否是压缩文件
[root@localhost ~]# file 1.txt.gz
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Tue Apr 19 00:30:14 2022
# 查看压缩包里文件内容
[root@localhost ~]# zcat 1.txt.gz
123
234
567
abc
# 递归压缩
[root@localhost ~]# gzip -r /root/
[root@localhost ~]# ls
1.txt.gz2.txt.gz3.txt.gzanaconda-ks.cfg.gz
# 解压文件
[root@localhost ~]# gzip -d 1.txt.gz
[root@localhost ~]# ls
1.txt2.txt.gz3.txt.gzanaconda-ks.cfg.gz
# 递归解压
[root@localhost ~]# gzip -rd /root/
[root@localhost ~]# ls
1.txt2.txt3.txtanaconda-ks.cfg## 特性:
1.压缩文件后,源文件不存在
2.只能压缩文件,不能压缩目录
3.压缩后,压缩包的位置在源文件的目录下
4.压缩后可以用zcat命令直接查看文件内容
5.一个压缩包,只有会有一个文件
6.解压后,压缩包没有了,只剩源文件
压缩命令-zip
# 1.安装zip和unzip命令
[root@localhost ~]# yum install -y zip
[root@localhost ~]# yum install -y unzip# 2.zip命令
zip 压缩包名 文件
# 选项:
-r:递归压缩,包括目录下的所有文件## 举例:
[root@localhost ~]# zip 4 1.txt
[root@localhost ~]# ls
1.txt2.txt3.txt4.zipanaconda-ks.cfg
[root@localhost ~]# file 4.zip
4.zip: Zip archive data, at least v1.0 to extract
[root@localhost ~]# zip -r 5 /root/
[root@localhost ~]# ls
1.txt2.txt3.txt4.zip5.zipanaconda-ks.cfg
[root@localhost ~]# file 5.zip
5.zip: Zip archive data, at least v1.0 to extract
[root@localhost ~]# zip /opt/4 1.txt 2.txt 3.txt
adding: 1.txt (stored 0%)
adding: 2.txt (stored 0%)
adding: 3.txt (stored 0%)
[root@localhost ~]# ls /opt/4.zip
/opt/4.zip
[root@localhost ~]# file /opt/4.zip
/opt/4.zip: Zip archive data, at least v1.0 to extract# 解压命令
unzip 压缩包名
# 选项:
-l:查看压缩包里有哪些文件
-d:指定解压路径## 举例:
[root@localhost ~]# unzip 5.zip
Archive:5.zip
creating: root/
extracting: root/1.txt
extracting: root/.bash_logout
inflating: root/.bash_profile
inflating: root/.bashrc
inflating: root/.cshrc
inflating: root/.tcshrc
inflating: root/anaconda-ks.cfg
inflating: root/.bash_history
extracting: root/2.txt
extracting: root/3.txt
extracting: root/4.zip
[root@localhost ~]# unzip -l4.zip
Archive:4.zip
LengthDateTimeName
------------------- ---------
1704-19-2022 00:301.txt
----------------
171 file
[root@localhost ~]# unzip/opt/4.zip-d /var/
Archive:/opt/4.zip
extracting: /var/1.txt
extracting: /var/2.txt
extracting: /var/3.txt
[root@localhost ~]# ls /var/
1.txt3.txtcachedbgameskerberoslocallognispreservespoolyp
2.txtadmcrashemptygopherliblockmailoptruntmp## 特性:
1.压缩文件后,源文件存在
2.可以指定压缩后保存的路径
3.可以压缩目录,也可以压缩文件,也可以指定多个文件一起压缩
4.压缩目录需要加选项,如果不加,压缩后,只有一个空目录,里面没有文件
5.解压后,压缩包不会消失,如果同一目录下出现同名文件则会询问是否覆盖
压缩命令-tar
tar命令本身是归档## 选项:
# c:归档
# f:指定包名
# z:使用gzip把归档文件压缩
[root@localhost ~]# tar zcf 4.tar.gz 1.txt
[root@localhost ~]# ls
1.txt2.txt3.txt44.tar6.txt7.txtanaconda-ks.cfgroot
[root@localhost ~]# file 4.tar.gz
4.tar.gz: gzip compressed data, from Unix, last modified: Tue Apr 19 03:08:46 2022
# 步骤:
1.先用了cf选项归档
2.再使用了z选项把归档文件压缩# v:显示压缩和解压的过程
[root@localhost ~]# tar vzcf tmp.tgz /tmp/
tar: Removing leading `/ from member names
/tmp/
/tmp/.XIM-unix/
/tmp/.X11-unix/
/tmp/.ICE-unix/
/tmp/.Test-unix/
/tmp/.font-unix/
/tmp/ks-script-dfPnxk
/tmp/yum.log
/tmp/vmware-root_560-2957190359/
/tmp/vmware-root_555-4282367637/# x:解压归档文件
[root@localhost ~]# tar vzxf tmp.tgz
tmp/
tmp/.XIM-unix/
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.font-unix/
tmp/ks-script-dfPnxk
tmp/yum.log
tmp/vmware-root_560-2957190359/
tmp/vmware-root_555-4282367637/
[root@localhost ~]# ls
1.txt3.txt4.tar6.txtanaconda-ks.cfgtmp
2.txt44.tar.gz7.txtroottmp.tgz
# 步骤
1.先用gzip解压成归档文件
2.再用x解压成这个目录# -C:指定解压的位置(路径)
[root@localhost ~]# tar zxf tmp.tgz -C /opt/
[root@localhost ~]# ls /opt/
tmp# t:查看压缩包里的文件有哪些
[root@localhost ~]# tar tf tmp.tgz
tmp/
tmp/.XIM-unix/
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.font-unix/
tmp/ks-script-dfPnxk
tmp/yum.log
tmp/vmware-root_560-2957190359/
tmp/vmware-root_555-4282367637/# j:使用bzip2压缩文件
yum -y install bzip2
[root@localhost ~]# tar jcf 1.txt.tar.bz2 1.txt
[root@localhost ~]# file 1.txt.tar.bz2
1.txt.tar.bz2: bzip2 compressed data, block size = 900k# J:压缩成.xz包
[root@localhost ~]# tar jcf 1.txt.tar.xz 1.txt
[root@localhost ~]# file 1.txt.tar.xz
1.txt.tar.xz: bzip2 compressed data, block size = 900k# X:排除指定的文件
[root@localhost tmp]# ls
ks-script-dfPnxkvmware-root_555-4282367637vmware-root_560-2957190359yum.log
[root@localhost tmp]# cat paichu.txt
ks-script-dfPnxk
vmware-root_555-4282367637
[root@localhost ~]# tar zcf tmp_paichu.tgz -X paichu.txt /tmp/
tar: Removing leading `/ from member names
[root@localhost ~]# tar tf tmp_paichu.tgz
tmp/
tmp/.XIM-unix/
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.font-unix/
tmp/yum.log
tmp/vmware-root_560-2957190359/# h:打包软链接(如果软链接文件是相对路径,那么不加h打包出来的文件会失效)
[root@localhost ~]# ll /etc/grub2.cfg
[root@localhost ~]# tar hzcf gr.tgz /etc/grub2.cfg
[root@localhost ~]# tar xf gr.tgz
[root@localhost ~]# ll etc/grub2.cfg
-rw-r--r--. 1 root root 4205 Apr 15 02:24 etc/grub2.cfg# P:压缩时带绝对路径,解压时按绝对路径解压。
[root@localhost ~]# tar zcPf opt.tgz /opt/
[root@localhost ~]# tar tf opt.tgz
tar: Removing leading `/ from member names
/opt/
/opt/wsh# --exclude:排除指定文件
[root@localhost ~]# tar zcf tmp_exclude.tgz --exclude=yum.log /tmp/
tar: Removing leading `/ from member names
[root@localhost ~]# tar tf tmp_exclude.tgz
tmp/
tmp/.XIM-unix/
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.font-unix/
tmp/ks-script-dfPnxk
tmp/vmware-root_560-2957190359/
tmp/vmware-root_555-4282367637/# --hard-dereference:打包硬链接文件## 特性:
1.压缩文件,源文件
2.目录和文件都可以压缩
3.压缩后,压缩包的位置可以指定任意目录
4.可以查看压缩包里有哪些文件,但是查看不了文件里的内容
5.一个压缩包中,可以有多个文件或目录
6.解压后,压缩包还在,源文件也可以随意指定路径 -C
7.使用zcf压缩,zxf解压
使用jcf压缩,jxf解压
使用Jcf压缩,Jxf解压
万能解压命令:xf## 注意:
1.tar命令,在解压文件时,如果有文件名冲突,则不会询问,直接覆盖
2.tar命令,在打包时,会自动删除绝对路径的"/"
3.以后打开,尽量使用相对路径,cd到需要打包目录或文件的上级目录
tar企业案例 1.数据库物理备份
# 基础环境准备
[root@localhost ~]# yum install-y mariadb-server
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mkdir backup# 案例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 /root/backup/mysql.tar.xz *
[root@localhost mysql]# tar tf /root/backup/mysql.tar.xz
[root@localhost mysql]# tar xf /root/backup/mysql.tar.xz -C /var/lib/mysql
2.传输海量文件
## 文件传输(如果etc下小文件特别多,很占用磁盘IO)
[root@localhost mysql]# cd ../
[root@localhost lib]# cp -a /etc/ /tmp/
## 以下方式减少小文件的传输
[root@localhost lib]# tar czf - /etc | tar xzf - -C /tmp
3.网络传输海量小文件
#常规方法
[root@localhost ~]# scp -r /etc root@10.0.0.200:/tmp
#建议方法:
#接收B主机, 需要监听端口
[root@hostB ~]# systemctl stop firewalld.service
[root@hostB ~]# nc -l 8888 |tar xzf - -C /tmp
#发送方A主机
[root@hostA ~]# tar -czf - /etc | nc 10.0.0.200 8888
tar: Removing leading `/ from member names
推荐阅读
- 电池管理系统你了解多少()
- 路由基础之访问控制列表
- 云迁移之5R方法优秀实践总结
- 一篇带你玩转 Elasticsearch 中文分词
- 来51CTO博客11年了
- 如何做好应用内测托管(请查收您的完整指南!)
- #yyds干货盘点# JVM 内存结构
- [OpenCV实战]16 使用OpenCV实现多目标跟踪
- Samba文件共享服务