Linux 文件压缩与归档

时间:2021-09-27 23:17:53

Linux 文件压缩与归档
.note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;}

之前总是将linux 的文件打包压缩命令混为一体,工作中我也很少的去压缩和打包文件。应用场景也多是从网上下载一个软件包,然后使用tar命令解压一下,基本上没有遇到什么阻碍。

回头看这两年写的文章,技术的含量不高,大多数是在进行知识的总结和思考。特别是这半年来,学习的动力虽然没有减少,但是却很少写博客了。书读了不少,linux的视屏看了不少,以前工作中或者书籍中难以理解的名词和概念如今也迎刃而解了。学到的知识没有及时的总结,可能随着时间就慢慢的遗忘了。今后会及时的将所学的知识进行总结,贴到博客中。


一、压缩

为什么要压缩?

以Apache网页压缩的gzip举例,使用压缩后,占用的带宽资源更少,传输的速率更快。在磁盘上使用压缩可以缩减文件的大小,使得同样大小的磁盘可以储存更多的信息。

压缩的原理?

许多文件都是AscII 文本文件,文本文件中许多信息是重复的,比如一篇文章中多次出现apple 和banana 。那么就可以使用0 代表apple,1代表banana。解压的时候再替换过来,这样子文件的大小能够大大的缩减。压缩有许多种算法,每种算法也可以指定压缩比。压缩比越高,压缩时间越长,响应的解压时间也要越长。因此不是说压缩比越高越好。

linux 中常用的压缩命令有,gzip、bzip2, xz。

压缩命令

1.gzip
gzip 压缩之后会删除源文件,压缩后的文件名后缀为.gz
gzip test.txt 压缩文件
gzip -d test.txt 解压文件
其中-d选项的意思是decompress(解压)的意思。
2、bzip2
bzip2 压缩之后的格式为bz2
bzip2 test.txt
bzip2 -kd test.txt
3、xz
xz 压缩之后的格式为.xz
xz test.txt
xz -kd test.txt
4、zip 与unzip
zip test.txt.zip ./test.txt
unzip test.txt.zip

这些压缩命令都有其他的选项,可以使用man 命令 来查看。这些命令同时也具有另外与之匹配的解压命令,但为了简化记忆,统一使用 command -d 来解压文件,使用-k 可以保留源文件。

二、归档

什么是tar ,man tar 之后很容易看到这个命令的缩写由来。GNU ’tar‘ saves many files togerther into a single tape or disk archive, and can restore indeividual files from the archive.

tar 是tape 和 archive 的缩写。tape 是胶带捆绑。archive是归档。也就是说tar命令并不进行文档的压缩。那么我们平时所使用的 tar 命令为什么能够实现压缩和打包的功能呢?

tar 如何实现文件的压缩功能?

tar 命令在工作的时候会调用之前提到的压缩命令,当归档的时候可以指定使用某种压缩算法,也可以不压缩只打包。比如压缩的时候,使用z 表示使用gzip压缩,使用j 表示使用bzip2 压缩。

tar 命令用法:

tar 
-c //create 创建归档文件
-f //file 操作的归档文件
-x //extrate 展开归档
打包文件与展开归档
tar -cf test.tar ./test1.txt ./test2.txt ./test3.txt //归档文件
tar -xf test.tar //展开归档
使用gzip 压缩与解压
tar -zcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
tar -zxf test.tar.gz
使用bzip2 压缩与解压
tar -jcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
tar -jxf test.tar.gz
使用xz压缩与解压
tar -Jcf test.tar.gz ./test1.txt ./test2.txt ./test3.txt
tar -Jxf test.tar.gz

Help Me 这么多解压命令怎么记得住?

压缩算法缩写:
z -------> gzip
j -------> bzip2
J -------> xz

查看归档中的文件列表

tar -tf  test.tar.gz //查看压缩文档中文档列表,而不必解压。

三、实测压缩效果

[root@roverliang test]# du -h
7.7M ./profiled/bin
7.8M ./profiled
7.8M .

//压缩过后的文件大小。
[root@roverliang test]# ll -Ah
total 8.6M
-rw-r--r-- 1 root root 3.0M Nov 3 15:58 file.tar.bz2
-rw-r--r-- 1 root root 3.4M Nov 3 15:56 file.tar.gz
-rw-r--r-- 1 root root 2.3M Nov 3 15:58 file.tar.xz
drwxr-xr-x 3 root root 4.0K Nov 3 15:44 profiled

压缩之前文件夹大小是7.8M ,压缩后最小的仅有2.3M,最大的也仅仅是3.4M.

我们可以看下linux kernel 的官网,看下内核使用的是那种压缩格式。

https://www.kernel.org/

可以看到,linux 的内核也是使用了xz 的格式。

四、其他内容

还有一些选项,我认为是没有必要的比如压缩或者解压的使用-v选项,除了满屏幕飘过乱码外,我觉得并没有什么作用。这些命令与linux的哲学思想不符合,linux的哲学思想是尽量减少与用户的交互,这本质上也反映了李纳斯的内敛性格。

文章中如果有不正确的地方,欢迎在评论区讨论,共同学习一起提高。

Linux 文件压缩与归档的更多相关文章

  1. Linux文件压缩、解压缩及归档工具一

    主题Linux文件压缩.解压缩及归档工具 压缩工具很重要的,因为要经常到互联网下载包 一compress/uncompress compress [-dfvcVr] [-b maxbits] [fil ...

  2. Linux文件压缩与打包笔记

    linux 文件压缩与打包笔记 压缩原理:通过算法去掉空位,1Bytes=8bits , 可能存储的真正有用的数据并没有占满一个字节空间 , 还有就是可能有重复的数据,通过某种算法从这些方面进行压缩处 ...

  3. Linux文件压缩和解压缩命令

    Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如: ...

  4. Linux使用——Linux命令——Linux文件压缩和解压使用记录

    一:tar(可压缩可解压) tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户.但是tar本身只是一个文件打包工具,只有和其他工具组合时才具有压 ...

  5. (转)linux下压缩和归档相关命令tar,zip,gzip,bzip2

    压缩包也有两种形式,一种是tar.gz包(.tgz包也是这种),一种是tar.bz2包. tar.gz包的解压方法:tar zxvf [PackageName].tar.gz tar.bz2包的解压方 ...

  6. Linux 文件压缩

    压缩工具   compress/uncompress:对应 .Z 结尾的压缩格式文件  压缩格式:gz.bz2.xz.zip.Z gzip  压缩文件并删除源文件(生成.gz的文件) gunzip 解 ...

  7. linux文件压缩与打包

    在linux中常见的压缩命令 首先,在linux中压缩文件的扩展名大多是 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar tar程序打包的数据,并没有压缩过 *.t ...

  8. Linux 文件压缩、打包

    文件压缩 计算机使用byte单位来计量.实际上,计算机最小的计量单位是bit.1byte = 8 bit.如果记录1这个数字,00000001,1会在最右边占一个1个bit 其他7个bit会被填上0. ...

  9. Linux文件压缩与解压命令

    1  .zip 格式压缩与解压 压缩命令 zip 压缩文件名 源文件 zip  -r   压缩目录名       源目录 解压命令 unzip 文件名 td@td-Lenovo-IdeaPad-Y41 ...

随机推荐

  1. 深入解析js异步编程利器Generator

    我们在编写Nodejs程序时,经常会用到回调函数,在一个操作执行完成之后对返回的数据进行处理,我简单的理解它为异步编程. 如果操作很多,那么回调的嵌套就会必不可少,那么如果操作非常多,那么回调的嵌套就 ...

  2. tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

    今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...

  3. MongoDB入门二:基本概念

    前言 工欲善其事必先利其器.在学习MongoDB之前,需要对MongoDB的一些基本概念有系统的了解. 所以,本篇文章主要介绍MongoDB的一些基本概念,这些概念的定义均来自<MongoDB权 ...

  4. 【Python】python代码如何调试?

    Python 程序如何高效地调试? 现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位 ...

  5. Hdu 4738【求无向图的桥】&period;cpp

    题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...

  6. centos 彻底删除nodejs默认的安装文件

    1> yum remove nodejs npm -y 2> cd  /usr/local/lib 移除所有 node 和 node_modules目录 cd  /usr/local/in ...

  7. 2751&colon; &lbrack;HAOI2012&rsqb;容易题&lpar;easy&rpar;

    2751: [HAOI2012]容易题(easy) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1087  Solved: 477[Submit][ ...

  8. CentOS 6&period;5系统上安装SVN服务器

    有效地管理源代码的方式是使用工具去帮助我们管理 , SVN(Subversion)就是目前主流的源代码管理工具 , 也称为版本控制工具. 本文主要介绍CentOS6.5上安装SVN服务器,配置SVN服 ...

  9. 关于相机拍照获取图片onActivityResult返回data 为null的问题

    调用相机拍摄方法 /** * capture new image */ protected void selectPicFromCamera() { if (!EaseCommonUtils.isSd ...

  10. Nginx简易编译安装

    1.下载Nginx: http://nginx.org/download/nginx-1.6.3.tar.gz 2.安装Pcre.Zlib.Openssl等相关组件: [root@track ngin ...