CentOS 文件压缩命令

知识就是力量,时间就是生命。这篇文章主要讲述CentOS 文件压缩命令相关的知识,希望能为你提供帮助。
文件压缩打包 压缩包格式【CentOS 文件压缩命令】

CentOS 文件压缩命令

文章图片

为什么使用压缩
1.文件或目录过大,需要依靠压缩传输 2.遇到的服务安装包都需要解压

压缩格式及命令
格式 Linux命令
.zip zip
.gz gzip
.tar tar
.tar.gz tar、gzip
压缩命令-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


    推荐阅读