linux压缩 巴哥犬:鸟哥的Linux私房菜之压缩与打包
发布时间:2022-09-20 15:29:53 所属栏目:Linux 来源:
导读: Linux中常见的压缩指令
Linux中几个常见的压缩文件扩展名(不同的指令/程序压缩出的格式不一样)
gzip与zcat
gzip程序能够解压缩compress、zip与gzip等软件压缩的档案。 与Windows不一样的
Linux中几个常见的压缩文件扩展名(不同的指令/程序压缩出的格式不一样)
gzip与zcat
gzip程序能够解压缩compress、zip与gzip等软件压缩的档案。 与Windows不一样的
|
Linux中常见的压缩指令 Linux中几个常见的压缩文件扩展名(不同的指令/程序压缩出的格式不一样) gzip与zcat gzip程序能够解压缩compress、zip与gzip等软件压缩的档案。 与Windows不一样的是,它压缩后将不保留源文件,并且使用gzip压缩的档案,可用Windows的WinRAR解压缩。 gzip [-cdtv#] filename zcat filename.gz -c:将压缩的数据输入到屏幕上,可用数据流重导向来处理 -d:解压缩的参数 -t:可以用来检验一个压缩文件的一致性,查看档案是否存在错误 -v:可以显示原档案/压缩档案的压缩比 -#:压缩等级,-1速度最快压缩比最差;-9速度最慢压缩比好;预设是-6 ex1:将/etc/man.config复制到/tmp下并用gzip压缩 [hp@localhost tmp]$ cd /tmp [hp@localhost tmp]$ cp /etc/man.config test [hp@localhost tmp]$ gzip -v test test: 56.1% -- replaced with test.gz [hp@localhost tmp]$ ls | grep test test.gz [hp@localhost tmp]$ zcat test.gz //读取压缩文件的内容,cat读取会乱码 # # Generated automatically from man.conf.in by the # configure script. // 解压缩 [hp@localhost tmp]$ gzip -d test.gz [hp@localhost tmp]$ ls | grep test* test ex2:将test档案用最佳压缩比-9来压缩 并且将源档案保存 [hp@localhost tmp]$ gzip -9 -c test > test.gz [hp@localhost tmp]$ ls | grep test test test.gz //其实压缩比一般不做改变,重点是-c和数据流重导向符号>的使用 bzip2与bzcat 如果说gzip是为了取代compress而成立的,那么bzip2的目的就是取代gzip,压缩比比gzip还要好,用法与gzip类似。可以解开.bz2,.bz,.tbz,.tbz2扩展名的压缩文件。 bzip2 [-cdkzv#] -c:将压缩过程产生的数据输入到屏幕上 -d:解压缩的参数 -k:保留源文件 -z:压缩的参数 -v:=gzip -#:=gzip [hp@localhost tmp]$ bzip2 -z -k test [hp@localhost tmp]$ ls -l | grep test -rw-r--r-- 1 hp hp 4617 Oct 12 19:36 test -rw-r--r-- 1 hp hp 2049 Oct 12 19:36 test.bz2 -rw-rw-r-- 1 hp hp 2051 Oct 12 19:48 test.gz 打包指令:tar 前面所提到的大多都是针对某一个档案进行压缩,虽然gzip和bzip2也能压缩目录,但它们是对目录中的档案一个一个进行压缩,而不像WinRAR将许多数据打包成一个档案。 所谓打包,指的是将多个档案或目录包成一个大档案的指令功能。tar就具有这样的打包功能,并且还能透过gzip和bzip2的支持,将档案进行压缩。由于tar广泛的使用,WinRAR还支持.tar.gz文档的解压缩。 tar [-j|-z] [cv] [-f 建立的档名] filename //打包与压缩 tar [-j|-z] [tv] [-f 建立的档名] //查看档名 tar [-j|-z] [xv] [-f 建立的档名] [-C 目录] //解压缩 -j:通过bzip2来压缩/解压缩,此时的档名为*.tar.bz2 -z:通过gzip来压缩/解压缩,此时的档名为*.tar.gz -v:在压缩/解压缩中,将过程中正在处理的文件名显示处理 -c:建立打包档案,可搭配-v查看被打包的filename(注意:这是小写的c) -t:查看被打包的档案有哪些 -x:解打包与解压缩,搭配-C指定目录解开,注意-c-x-t不能同时出现在一条指令 -C:(大写)用在解压缩,指定目录 -f:后接要被处理的档名 其他的后续练习中将会用到: -p:保留备份数据的原始权限与属性,常用于备份(-c)重要的配置文件 -P:保留绝对路径,即允许备份数据中含有根目录 --exclude=FILE:在压缩的过程中,不要将FILE打包 以bzip2程序为例,较为常用的tar指令串可以这样理解: filename就是我们自己取的档名,因为tar不会自动建立档名,我们需要预定义,特别要注意的是扩展名,只打包的话.tar,-j的话.tar.bz2,-z的话.tar.gz。-f后面要立即接filename,如果将参数放在一起写要注意: //使用tar备份/etc/的目录 [root@localhost ~]# tar -zpcvf test.tar.gz /etc/ [root@localhost ~]# tar -jpcvf test.tar.bz2 /etc/ [root@localhost ~]# ls -l |grep test -rw-r--r-- 1 root root 8254546 Oct 12 22:48 test.tar.bz2 -rw-r--r-- 1 root root 12844552 Oct 12 22:47 test.tar.gz // gzip压缩完12M,bzip2压缩完8M //使用-p会将目录的属性和权限全部一起打包 //查看备份的数据 [root@localhost ~]# tar -jtvf test.tar.bz2 //-v显示档案的完整属性 [root@localhost ~]# tar -jtf test.tar.bz2 etc/alternatives/print-lp etc/alternatives/print-lprman etc/alternatives/print-lprm etc/alternatives/print etc/auto.net 我们查看所打包的数据中有哪些档案时linux压缩,会发现所有的档案路径都没有根目录,这主要是出于备份安全的考虑,因为大多压缩的备份数据还是会解压缩使用的,tar记录的文档名就是解压缩后的文档名,如果添加根目录【-P】,则解压缩后的档名是绝对路径,即/etc/xxx,那么你原先/etc下的数据就会被覆盖;不添加根目录,如果你在/tmp下解压缩,就会是/tmp/etc/xxx。 [root@localhost ~]# tar -jcpPvf test2.tar.bz2 /etc/ [root@localhost ~]# ls -l |grep test -rw-r--r-- 1 root root 8256537 Oct 12 23:04 test2.tar.bz2 -rw-r--r-- 1 root root 8254546 Oct 12 22:48 test.tar.bz2 -rw-r--r-- 1 root root 12844552 Oct 12 22:47 test.tar.gz [root@localhost ~]# tar -jtf test2.tar.bz2 //有根目录 /etc/alternatives/print-lprman /etc/alternatives/print-lprm /etc/alternatives/print /etc/auto.net // 解压缩到/tmp目录下 [root@localhost ~]# tar -jxvf test.tar.bz2 -C /tmp [root@localhost ~]# ls -l /tmp | grep etc drwxr-xr-x 88 root root 4096 Oct 12 19:00 etc //如何只解压缩一个档案 [root@localhost ~]# tar -jtf test.tar.bz2 | grep shadow etc/gshadow- etc/shadow //仅想解压缩etc/shadow etc/gshadow etc/shadow- //在指令后面加上要解压缩的档名就行 [root@localhost ~]# tar -jxvf test.tar.bz2 etc/shadow etc/shadow [root@localhost ~]# ll etc total 8 -r-------- 1 root root 1035 Oct 8 23:29 shadow //打包某目录,但不包含该目录下的某些档案--exclude [root@localhost ~]# tar -jcvf test.tar.bz2 --exclude=/etc/shadow* /etc/ 在Linux中,我们习惯将仅打包的数据*.tar称作tarfile,而将压缩后的*.tar.gz/*.tar.bz2称为tarball。 (编辑:我爱制作网_沈阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330576号