Linux 文件压缩、打包
文件压缩
计算机使用byte单位来计量。实际上,计算机最小的计量单位是bit。1byte = 8 bit。如果记录1这个数字,00000001,1会在最右边占一个1个bit
其他7个bit会被填上0。其实在这个例子中那7个bit是“空的”。为了要满足目前我们的操作系统数据的访问,会将该数据转为byte形态记录了。而一些
聪明的设计师就利用一些复杂的计算方式,将这些没有使用到的空间“丢”出来,让文件占用的空间变小。这就是压缩的技术。
另外一种压缩技术也很有趣,它是将重复的数据进行统计记录的,比如,如果你的数据为“111……”,共有100个1时,那么压缩技术会记录为“100个1”
而不是真的有100个1存在。这样也能够精简文件记录的内容。
简单地说,你可以将它想象成,文件里面有相当多的“空间”存在,并不是完全填满的,而“压缩”的技术就是将这些“空间”填满,让整个文件占用量下降。
这些压缩过的文件无法直接被操作系统所使用,因此,若要使用这些被压缩过的文件数据,必须将它“还原”成未压缩前的样子,这就是所谓的“解压缩0”。
压缩前与压缩后的文件所占用的磁盘空间大小,就被称为“压缩比”。
在Linux环境中,压缩文件的扩展名大多是*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,为什么会有这样的扩展名,不是说Linux的扩展名没有什么作用吗?
这是因为Linux的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法相互压缩/解压缩文件。所以,当你下载到某个压缩文件
时,自然就要知道该文件是由哪种压缩命令所制作出来了。

gzip,zcat
gzip是应用最广泛的要命令了,gzip可以解开compress、zip与gzip等软件所压缩的文件。gzip新建的压缩文件为*.gz的文件名。

当使用gzip压缩时,默认状态下原本的文件会被压缩称为.gz的文件名,原文件就不存在了。


gzip的压缩已经优化过了,虽然gzip提供1~9的压缩等级,不过使用默认的6就非常好用了。cat可以读取纯文本文件,那个zcat可以读取纯文本文件被压缩
后的压缩文件。
bzip2,bzcat
bzip2是为了取代gzip并提供更加的压缩比而来的。bzip2是很不错的东西,竟然比gzip还要好。

使用gzip扩展名自动创建为.gz。bzip2扩展名为.bz2。如果想要读取压缩文件的内容呢?是否一定要解压缩?当然不需要。使用bzcat这个命令
来读取内容即可。当你要解开一个压缩文件时,这个文件的名称为.bz,.bz2,.tbz,tbz2等,那么就可以尝试使用bzip2来解压缩。
打包命令
虽然gzip、bzip2也能够针对目录进行压缩,不过这两个命令对目录的压缩指的是将目录内所有文件“分别”进行压缩的操作。这种将多个文件或目录包成一个大文件的命令
功能,我们可以称呼它是一种“打包命令”。tar可以将多个目录或文件打包成一个太大文件,同时还可以通过gzip/bzip2的支持,该文件同时进行压缩。
tar

最简单使用tar就只要记忆如下的内容即可:
- 压缩: tar -jcv -f filename.tar.bz2要被压缩的文件或目录名称
- 查询: tar -jtv -f filename.tar.bz2
- 解压缩: tar -jxv -f filename.tar.bz2 -C 预解压缩的目录
filename.tar.bz2是我们自己取的文件名,tar不会主动产生创建的文件名,要自定义。所以扩展名就很重要了,如果不加[-j]|[-z],文件名最好为.tar即可
如果是-j参数,代表有bzip2的支持,因此文件名最好取为*.tar.bz2,因为bzip2会产生bz2的扩展名。至于如果是加上了-z的gzip的支持,那文件名最好
取为*.tar.gz。
使用tar加入-j或者-z的参数备份/etc/目录


我们知道bzip2也即-j这个参数来制作备份时,能够得到比较好的压缩比。"-p"这个参数的原因是为了保存原文件的权限与属性。
查阅tar文件的数据内容(可查看文件名)
查看文件名:

加上-v这个参数时,详细的文件权限/属性都会被列出来。如果只是想知道文件名唯一,就将-v去掉。从上面的数据我们可以
发现一件很有趣的事情,那就是每个文件名都没有了根目录了。那为什么要删掉目录呢?主要是为了安全,我们使用tar备份的数据
可能会需要解压缩回来使用,在tar所记录的文件就是解压缩后的实际文件名。如果去掉根目录,假设你将备份数据在/tmp中解开,那
么解压缩的文件名变成“/tmp/etc/xxx”。但如果没有去掉根沐,解压缩后的文件名就会是绝对路径,即解压缩后的数据一定会被放置到
/etc/xxx去。如此一来,你的原来的/etc/下面的数据就会被备份数据所覆盖掉了。
如果你确定是需要保留根目录到tar文件中(备份),那么可以使用-P(大写这个参数)

将数据解压缩
在当前目录下进行解压缩的操作:

指定解压的目录:

进解开单一文件:


打包目录,但不包含该目录下的某些文件
假设想打包/etc/和/root这几个重要的目录,但不想要打包/root/etc*开头的文件,假设这个新的打包文件为/root/system.tar.bz2,
如果想要两行输入时,最后面加上反斜杠(\)并立刻按下[Enter],就能够到第二行继续输入了。

仅备份比某个时刻还要新的文件
某些情况下想要备份新的文件,不想备份旧文件。此时--newer-mtime这个参数就很重要。其实这是两个参数“--newer”表示后续
日期包含“mtime”与“ctime”,而"--newer-mtime"仅是mtime而已。


基本名称
tar打包出来的文件有没有进行压缩得到的文件称为不同。如果仅是打包而已,就是“tar -cv -f file.tar” 这个文件我们称呼为tarfile。如果还进压缩的支持
例如 “tar -jcv -f file.tar.bz2”时,我们称呼为tarball。这只是一个基本称呼。tar除了可以将数据打包成文件职位,还能够将文件打包到特别的设备。
Linux 文件压缩、打包的更多相关文章
- Linux文件压缩/打包/解压
在Linux日常维护中,经常需要备份同步一些比较重要的文件,而在传输过程中如果文件比较大往往会非常慢,而且还会非常占用空间,这时候就需要我们使用压缩工具对大文件进行压缩打包,下面我们来介绍一下常用的压 ...
- Linux文件压缩与打包笔记
linux 文件压缩与打包笔记 压缩原理:通过算法去掉空位,1Bytes=8bits , 可能存储的真正有用的数据并没有占满一个字节空间 , 还有就是可能有重复的数据,通过某种算法从这些方面进行压缩处 ...
- linux文件压缩与文件夹压缩(打包)
目录 一:linux文件压缩 1.linux常见的压缩包有哪些? 2.bzip压缩(文件) 二:打包(文件夹压缩) 1.打包命令 2.参数 3.参数解析(实战) 4.注意事项 简介: win中的压缩包 ...
- Linux 文件压缩与归档
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Linux文件压缩和解压缩命令
Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如: ...
- linux文件管理--压缩打包
目录 linux文件管理--压缩打包 1.压缩打包介绍 2.gzip压缩工具 3.zip压缩工具 注意: 4.tar压缩工具 5.tar生产案例实践 linux文件管理--压缩打包 1.压缩打包介绍 ...
- Linux文件压缩、解压缩及归档工具一
主题Linux文件压缩.解压缩及归档工具 压缩工具很重要的,因为要经常到互联网下载包 一compress/uncompress compress [-dfvcVr] [-b maxbits] [fil ...
- linux文件压缩与打包
在linux中常见的压缩命令 首先,在linux中压缩文件的扩展名大多是 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar tar程序打包的数据,并没有压缩过 *.t ...
- Linux中的文件压缩,打包和备份命令
压缩解压命令 gzip 文件 -c : 将压缩数据输出到屏幕,可用来重定向 -v 显示压缩比等信息 -d 解压参数 -t 用来检验一个压缩文件的一致性看看档案有没错 -数字 : 压 ...
随机推荐
- TCP连接与断开
两台宿主机 一台:作为服务器 另一台:作为客户端 服务器的步骤: 打开[控制面板]----点击[程序]---点击程序和功能中[打开或关闭Windows功能]---点击[Telnet服务器]--点击[确 ...
- 【Java基础】- Java学习路线图
Java的学习路线图,整理以备自己学习和温习. 1.Java基础 具体内容: 1. 编程基础(开发环境配置.基础语法.基本数据类型.流程控制.常用工具类) 2. 面向对象(继承.封装.多态.抽象类.接 ...
- 【AIX】3004-314 Password was recently used and is not valid for reuse
[AIX]3004-314 Password was recently used and is not valid for reuse 一.1 BLOG文档结构图 一.2 前言部分 ...
- 【TTS】传输表空间AIX asm -> linux asm
[TTS]传输表空间AIX asm -> linux asm 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌 ...
- 11g包dbms_parallel_execute在海量数据处理过程中的应用
11g包dbms_parallel_execute在海量数据处理过程中的应用 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- k8s之volume
pause容器为基础架构容器,每一个节点都有一个pause镜像, 为每一个pod提供底层基础支撑设备,所有pod中容器会共享此容器的网络空间,存储卷也是 还可使用csi,存储插件. 使用存储卷步骤1. ...
- 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法
原文:https://www.jb51.net/article/29962.htm 当前很多应用都适用字符串char(15)来存储IP地址(占用16个字节),利用inet_aton()和inet_nt ...
- NLP从词袋到Word2Vec的文本表示
在NLP(自然语言处理)领域,文本表示是第一步,也是很重要的一步,通俗来说就是把人类的语言符号转化为机器能够进行计算的数字,因为普通的文本语言机器是看不懂的,必须通过转化来表征对应文本.早期是基于规则 ...
- 摘:J2EE开发环境搭建(1)——安装JDK、Tomcat、Eclipse
J2EE开发环境搭建(1)——安装JDK.Tomcat.Eclipse 1:背景 进公司用SSH(Struts,spring和hibernate)开发已经有两个月了,但由于一 直要么只负责表示层的开发 ...
- Thinkphp3.2下导入所需的类库 同java的Import 本函数有缓存功能
* 导入所需的类库 同java的Import 本函数有缓存功能 * @param string $class 类库命名空间字符串 * @param string $baseUrl 起始路径 * @pa ...