文章来源:linux下文件的打包和压缩

一、文件压缩的原理

简单来说,压缩技术就是在存储时将文件里面没有使用的空间利用起来,主要有以下两种情况。

  1. 存储时去掉没有用到的空间。假设我们只是存储一个数字 1 ,二进制表示数字1只需1个bit是1就可以表示(1=1*2^0),但是为了满足操作系统对数据的存取要求,只能通过byte的形态来记录。1 byte = 8 bits,所以每个byte当中会有8个bits,而其他的7个bits将自动的被填上0,其实那7个bits是没有用到的。

  2. 另外一种压缩技术是将重复的数据进行统计记录。举例来说,如果数据为[1111…]共有100个1,那么记录为“100个1”也能精简文件的大小。

二、linux常见的压缩指令

Linux支持的压缩指令可以通过不同的后缀名进行区分,常见的扩展名:

  • .zip:zip程序压缩的文件
  • .gz:gzip程序压缩的文件
  • .bz2:bzip2程序压缩的文件
  • .xz:xz程序压缩的文件
  • .tar:tar程序打包的数据,并没有压缩过
  • .tar.gz:tar程序打包的数据,经过gzip压缩过
  • .tar.bz2:tar程序打包的数据,经过bzip2压缩过
  • .tar.xz:tar程序打包的文件,经过xz压缩过

三、常用实例

以把/etc中内容打包压缩到/tmp/etc.*,然后在解压回/etc为例

1、tar命令

打包:tar -cvf /tmp/etc.tar /etc

解包:tar -xvf /tmp/etc.tar /etc

常用参数 :

  • -c :建立压缩档案(create 的意思);

  • -x :解压档案!

  • -v : 显示所有过程 ,执行过程会打印在屏幕上!

  • -f : 使用档案名字,这个参数是最后一个参数,后面只能接档案名。

2、zip命令

压缩:zip -r /tmp/etc.zip /etc 

解压:unzip /tmp/etc.zip /etc
  • -r: 将指定的目录下的所有子目录以及文件一起处理

3、gz命令

压缩:tar -czvf /tmp/etc.tar.gz /etc 

解压:tar -xzvf /tmp/etc.tar.gz /etc
  • -z:使用gzip命令对文件进行压缩或解压缩。

4、bz2命令

压缩:tar -cjvf /tmp/etc.tar.bz2 /etc 

解压:tar -xjvf /tmp/etc.tar.bz2 /etc
  • -j:使用bz2命令对文件进行压缩或解压缩。

5、xz命令(必须分两步)

打包:tar -cvf /tmp/etc.tar /etc
压缩:xz -z /tmp/etc.tar #将 /tmp/etc.tar压缩成为 /tmp/etc.tar.xz 解压缩:xz -d etc.tar.xz #将 etc.tar.xz解压成 etc.tar
解包:tar -xvf etc.tar
  • -z:使用xz命令对文件进行压缩操作。

  • -d:使用xz命令对文件进行解压缩操作。

以上命令均可以将多个文件夹或文件打包压缩到一个文件中

总结:

没有特殊要求推荐使用bz2命令,它是速度压缩比都比较折中的命令,如果想要快速压缩文件,可以使用gz命令,如果追求最高的压缩比,可以使用xz命令

linux下文件的打包和压缩的更多相关文章

  1. Linux下文件的打包、解压缩指令——tar,gzip,bzip2,unzip,rar

    本文是笔者对鸟叔的Linux私房菜(基础学习篇) 第三版(中文网站)中关于 Linux 环境下打包和解压缩指令的内容以及日常操作过程中所接触的相关指令的总结和记录,以供备忘和分享.更多详细信息可直接参 ...

  2. Linux下文件的打包、解压缩指令——tar,gzip,bzip2

    本文是对 鸟叔的Linux私房菜(基础学习篇) 第三版 的学习笔记,原文可参考原书中文网站 鸟叔的Linux私房菜.更多详细信息可直接参考对应Linux命令的 man 帮助( 如 man tar). ...

  3. Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.

    Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...

  4. 学习笔记12—linux下文件的复制、移动与删除

    查看centOS 版本     cat /etc/redhat-release 1,复制粘贴文件 cp  [选项]  源文件或目录  目标文件或目录 2,剪切粘贴文件 mv [选项]  源文件或目录 ...

  5. Linux的文件的打包(tar方法)

    Linux的文件的打包(tar方法) tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一 ...

  6. Linux下文件的三种时间戳

    Linux下文件的三种时间标记 三种时间对应关系表 column column column 访问时间 Access atime 修改时间 Modify mtime 状态改动时间 Change cti ...

  7. linux下文件结束符

    linux下文件结束符,我试过了所有的linux,发现其文件的结束符都是以0a即LF结束的,这个是操作系统规定的,windows下是\r\n符结束,希望可以帮助大家. -------------转:来 ...

  8. dos2unix,去掉Linux下文件中的^M

    Windows系统下使用VS2010编写好的CPP文件,想放到Linux上进行编译.发现Linux上文件中的每行代码末尾都跟着^M这个符号. 为什么同一份文件在windows上和Linux上显示的不一 ...

  9. linux下文件的复制、移动与删除

    linux下文件的复制.移动与删除命令为:cp,mv,rm 一.文件复制命令cp     命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)      ...

随机推荐

  1. HTML 基础(五)

    一.列表 有序列表 无序列表 自定义列表 无序列表 无序列表是一个项目的列表,此列项目使用粗体圆点进行标记 无序列表使用 <ul> 标签 <ul> <li>Coff ...

  2. Shell 命令 之linux 模式下的编程语言

    今天简单介绍一下shell 命令的使用,希望对大家有所帮助!!! 一. 1.首先创建一个文本 在终端 touch test.sh 用gedit test.sh 打开.sh 文件 输入如下,第一行是申明 ...

  3. python fabric 练习记录

    https://blog.csdn.net/freeking101/article/details/81103945   fabric 域名

  4. FastJson反序列化和构造函数之间的一点小秘密

    各位看官大家下午好,FastJson想必大家都很熟悉了,很常见的Json序列化工具.今天在下要和大家分享一波FastJson反序列化和构造函数之间的一点小秘密. 下面先进入大家都深恶痛绝的做题环节.哈 ...

  5. C++primer(第五版)Sales_item.h头文件

    C++primer(第五版)1.51练习章节需要有一个Sales_item类,但是给的网站找不到,直接复制下面就好咯: #ifndef SALESITEM_H #define SALESITEM_H ...

  6. Spring Framework之事务管理

    目录 问题 数据库事务 事务的定义 事务的目的 事务的特性 事务隔离级别 数据并发问题 事务隔离级别对数据并发问题的作用 快照读 Spring事务管理 事务管理接口 TransactionDefini ...

  7. linux下shell脚本中sed命令的用法

    先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...

  8. Array(数组)对象-->push() 方法

    1.定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法: array.push(item1, item2, ..., itemX) 参数:item1, item2, ...

  9. 使用StopWatch类来计时 (perf4j-0.9.16.jar 包里的类)

    public class StopWatch { static public int AN_HOUR = 60 * 60 * 1000; static public int A_MINUTE = 60 ...

  10. IKAnalyzer修改支持lucene8.0

    源码已经上传GitHub. 如果直接使用jar:IKAnalyzer-5.0.2. 在这我只是在原有代码结构上做了微调,让代码支持lucene8.0.