2018-08-09笔记

本文详细介绍了Linux下的几种常见压缩工具,如gzip、bzip2、xz和zip的使用,包括压缩级别、选项、示例等。同时,讲解了tar打包工具的使用,包括压缩与解压缩,以及如何与其他压缩工具结合使用。还提到了大文件解压和跨主机传输数据的解决方案。
摘要由CSDN通过智能技术生成

压缩打包

常见的压缩文件:
Windows:.zip .7z .rar
Linux:.zip, .gz, .bz2, .xz, .tar.gz, .tar.bz2, .tar.xz
为什么要压缩?
有时候对电脑磁盘上的文件或者文件夹做压缩,方便传输。压缩后空间会小一点,针对磁盘来说,会节省空间。对网络来说,压缩后对带宽要求会低一点,压缩可以有效地减小带宽。
Linux下的压缩文件不一定非要使用上述后缀名,但是便于使用和辨认,遵循这些约定。
==Linux不识别rar格式的压缩文件==

.gz 表示由gzip压缩工具压缩的文件。
.bz2 表示由bzip2压缩工具压缩的文件。
.tar 表示由tar打包程序打包的文件(tar没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 先打包,在由gzip压缩
.tar.bz2 先打包,在由bzip2压缩
.tar.xz 先打包,在由xz压缩

gzip压缩工具

格式

gzip [参数] filename

选项

-a或——ascii:使用ASCII文字模式;
-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h或——help:在线帮助;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
-N或——name:压缩文件时,保存原来的文件名称及时间戳记;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。

示例

gzip -d是解压缩。
gzip -# filename     //#范围1-9,默认6
gzip 不能压缩目录
gzip filename 压缩文件,暂不支持压缩目录,压缩后源文件消失
gzip -d filename.gz 解压文件,解压后,源压缩文件消失
gunzip filename.gz 解压文件, 解压后,源压缩文件消失
gzip –c filename > /tmp/filename.gz指定压缩文件路径,并且源文件存在
gzip –d –c /tmp/filename.gz > /目录/filename 解压文件到那个路径下,并且源压缩文件存在。
gunzip –c /tmp/filename.gz > /目录/filename 解压文件到那个路径下,并且源压缩文件存在。
zcat 1.txt.gz 查看.gz文件
file /tmp/1.txt.gz 查看文件的属性
  • gzip 1.txt
    进入/tmp/下做实验,首先创建一个目录
[root@linux7-128 ~]# cd /tmp/
[root@linux7-128 tmp]# mkdir hgz

然后在创建一个比较大的文件,可以把/etc/下所有conf后缀的文件内部全部放到新文件下

(使用find命令先查找出/etc/下所有后缀为conf的文件)
[root@linux7-128 tmp]# find /etc/ -type f -name "*conf" 
/etc/resolv.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/yum/pluginconf.d/fastestmirror.conf
/etc/yum/pluginconf.d/langpacks.conf
/etc/yum/protected.d/systemd.conf
......
/etc/abrt/plugins/CCpp.conf
/etc/geoclue/geoclue.conf
/etc/ntp.conf
/etc/setroubleshoot/setroubleshoot.conf
(然后将这些文件的内容全部传输至1.txt中,注意此时进入到hgz目录中)
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
(使用df -h查看文件大小,发现内存很小,多循环几次)
[root@linux7-128 hgz]# du -sh 1.txt 
652K    1.txt
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# find /etc/ -type f -name "*conf" -exec cat {} >> 1.txt \;
[root@linux7-128 hgz]# du -sh 1.txt 
4.7M    1.txt
[root@linux7-128 hgz]# wc -l 1.txt 
132678 1.txt

这时候使用gzip压缩一下

[root@linux7-128 hgz]# gzip 1.txt 
[root@linux7-128 hgz]# ls
1.txt.gz
[root@linux7-128 hgz]# du -sh 1.txt.gz 
1.2M    1.txt.gz

经过压缩,文件名后缀变为了.gz,大小也缩小为1.2M。现在在解压一下,使用gzip -d

[root@linux7-128 hgz]# gzip -d 1.txt.gz 
[root@linux7-128 hgz]# ls
1.txt
[root@linux7-128 hgz]# du -sh 1.txt 
4.5M    1.txt
[root@linux7-128 hgz]# wc -l 1.txt 
132678 1.txt

解压完成后发现一个问题,文件大小变为了4.5M,而没有解压缩之前的文件大小是4.7M,他们的行数是一样的,所以不是少了内容。这是因为之前在追加内容时,文件大小的虚的,类似海绵里的水,经过解压缩后,此时的文件大小才是正常的大小。

  • gzip -(1-9)
    gzip有种用法是后面-数字1-9,表示压缩级别,默认级别是6。级别1最不严谨,9最严谨,同时也最耗费CPU资源。
[root@linux7-128 hgz]# gzip -1 1.txt 
[root@linux7-128 hgz]# du -sh 1.txt.gz 
1.4M    1.txt.gz

这里可以看到使用1级别压缩后,大小为1.4M,使用默认级别6时压缩大小为1.2M。我们平时压缩一般保持默认即可。

[root@linux7-128 hgz]# gzip -9 1.txt 
[root@linux7-128 hgz]# du -sh 1.txt.gz 
1.2M    1.txt.gz

从上面可以看出,使用9级别压缩的大小和默认6级别大小是一样的,这说明当文件压缩到一定程度时,会取一个适中的值,不会再继续往小压缩。

  • gunzip
    gzip的另一种解压命令
[root@linux7-128 hgz]# gunzip 1.txt.gz 
[root@linux7-128 hgz]# ls
1.txt
  • 如何查看压缩文件,zcat
    cat命令是不能查看压缩文件的,这时候文件以及成了一个二进制的文件。
    这时候可以使用zcat,实际上这个命令就是解压后在查看
    [root@linux7-128 hgz]# zcat 1.txt.gz
    文件内容过多不在此多叙述。
    也可以使用file命令查看压缩文件信息
[root@linux7-128 hgz]# file 1.txt.gz 
1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Thu May 24 20:52:19 2018, max compression
  • 压缩文件时保留原文件
[root@linux7-128 hgz]# gzip -c 1.txt > /tmp/1.txt.gz
[root@linux7-128 hgz]# ls
1.txt
[root@linux7-128 hgz]# ls /tmp/1.txt.gz 
/tmp/1.txt.gz
[root@linux7-128 hgz]# file !$
file /tmp/1.txt.gz
/tmp/1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Thu May 24 20:52:19 2018
  • 解压文件到其他地方
[root@linux7-128 hgz]# gzip -d -c /tmp/1.txt.gz > 2.txt
[root@linux7-128 hgz]# ls
1.txt  2.txt
[root@linux7-128 hgz]# wc -l *.txt
 132678 1.txt
 132678 2.txt
 265356 总用量
[root@linux7-128 hgz]# du -sh *.txt
4.5M    1.txt
4.5M    2.txt

这是新解压的文件和原文件大小行数都是相同的
- gzip不能解压目录

递归的压缩目录

gzip -rv test6
这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。

递归地解压目录

gzip -dr test6</
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值