博客地址:http://www.moonxy.com

一、前言

在 Linux 系统中,文件的后缀名没有实际的意义,加或者不加都无所谓。但是为了便于区分,我们习惯在定义文件名时加一个后缀名,比如常见的归档文件 .gz,归档压缩文件 .tar.gz 等,特别对于压缩文件,最好加上后缀名,这样方便判断压缩文件是由那种压缩工具所压缩,而后才能去正确地解压缩这个文件。打包和压缩虽然经常同时出现,但是两者却各不相同,打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

二、打包归档

tar 是一个打包工具,可以把目录或文件打包成一个文件,它将所有文件归档成一个大文件整体,方便复制或者移动。命令格式为:tar [-zjxcvfpP] filename 目录或文件,此命令选项前的"-"可以省略。tar 命令可以用来压缩打包单文件、多个文件、单个目录、多个目录,使用 tar 命令打包后原文件不会删除

-z:表示同时使用 gzip 压缩;
-j:表示同时使用 bzip2 压缩;
-J:表示同时使用 xz 压缩;
-x:表示解包或者解压缩;
-t:表示查看 tar 包里的文件;
-c:表示建立一个 tar 包或者压缩包;
-v:表示可视化,即显示打包的内容;
-f:表示后面需要跟文件名,即 "-f filename",表示归档后的文件名为 filename,或者解包文件名为 filename。如果使用了多个参数时,-f 参数一定要写到参数列表的最后;
-p:使用原文件的原来属性(属性不会依据使用者而变),恢复字段到它们的原始方式,忽略现有的用户权限屏蔽位(umask)。 加了 -p 之后,tar 进行解压后,生成的文件的权限,是直接取自 tar 包里面文件的权限(不会再使用该用户的 umask 值进行运算),那么不加 -p 参数,将还要再减去 umask 的值(位运算的减),但是如果使用 root 用户进行操作,加不加 -p 参数都一样;
-P:不剥离起始路径的“/”目录,可以使用绝对路径来压缩。一般情况下,待压缩的目录如果是一个绝对路径,压缩后会将根目录符号/去掉,这样,在解压时,得到的目录结构是以当前目录为基础目录的,如果在压缩时加上-P,则解压时还是以根目录为基础目录;
-r:向压缩归档文件末尾追加文件;
-u:更新原压缩包中的文件;
--exclude file:在打包或压缩的过程中,不要将 file 打包在内。
不管是打包还是解包,原来的文件是不会删除的,而且它会覆盖当前已经存在的文件或者目录。

打包:tar -cvf filename 文件或目录

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
[root@ryan linux]# tar -cvf test1.tar test1
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar

解包:tar -xvf filename

[root@ryan linux]# tar -tf test1.tar
test1/
test1/cp1.txt
[root@ryan linux]# rm -rf test1
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
-rw-r--r--. root root Mar : test1.tar
[root@ryan linux]# tar -xvf test1.tar
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar

三、压缩工具

Linux 中 compress 命令是一个相当古老的 Unix 档案压缩命令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,所以现在通常改用 gzip 为档案压缩工具。

3.1 gzip 压缩工具

gzip 命令的格式为:gzip [-d#] filename,其中 # 为1-9的数字。gzip 后面跟文件名,压缩后原文件会删除,但是 gzip 不支持压缩目录

-d:该参数在解压缩时使用,gzip -d 后面跟压缩文件表示解压已经压缩的文件;
-#:表示压缩等级,1 为最差,9 为最好,6 为默认值。

压缩:gzip filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar
[root@ryan linux]# gzip test1
gzip: test1 is a directory -- ignored
[root@ryan linux]# gzip install.log
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log.gz
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar

解压文件:gzip -d filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log.gz
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar
[root@ryan linux]# gzip -d install.log.gz
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar

3.2 bzip2 压缩工具

bzip2 命令的格式为:bzip2 [-dz] filename,不能压缩目录,压缩后原文件会删除。-z 表示压缩,-d 表示解压缩。其实,压缩时,-z 选项可以省略。

压缩:bzip2 [-z] filename 文件

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# bzip2 test1
bzip2: Input file test1 is a directory.
[root@ryan linux]# bzip2 file.log
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log.bz2
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz

解压缩:bzip2 -d filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log.bz2
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# bzip2 -d file.log.bz2
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz

3.3 命令 bzcat

bzcat - decompresses files to stdout,查看压缩包文档内容,tar -tf filename 可以查看归档包或者压缩包的文件列表,对于 bzip2 压缩格式的文本文档,我们可以使用 bzcat 命令查看文档内容。bzcat filename

[root@ryan linux]# bzcat file.log.bz2
安装 libgcc-4.4.-.el6.x86_64
warning: libgcc-4.4.-.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安装 setup-2.8.-.el6_4..noarch
安装 filesystem-2.4.-.el6.x86_64
安装 xml-common-0.6.-.el6.noarch

对应的,zcat 查看 gzip 压缩格式的文本文档内容;xzcat 查看 xz 压缩格式的文本文档内容;此外还有zless、bzless、zmore、bzmore、xzless、xzmore 等命令,其实都是 cat、less、more 的延伸命令,用于查看压缩文档的内容。

3.4 使用 zip 压缩

如果没有安装 zip 命令,首先需要安装:[root@ryan linux]# yum install -y zip,zip 既可以压缩文件也可以压缩目录,且压缩后原文件不删除。

-r 选项表示递归压缩下级目录和文件,如下:zip -r filename 目录或文件

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
-rw-r--r--. root root Mar : test1.zip
drwxr-xr-x. root root Mar : test4
[root@ryan linux]# zip -r test4.zip test4
adding: test4/ (stored %)
adding: test4/cp1.txt (stored %)
adding: test4/testfolder/ (stored %)
adding: test4/testfolder/cp2.txt (stored %)
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
-rw-r--r--. root root Mar : test1.zip
drwxr-xr-x. root root Mar : test4
-rw-r--r--. root root Mar : test4.zip

3.5 解压 zip

解压 zip 压缩包,需要使用 unzip,需要安装:[root@ryan linux]# yum install -y unzip,unzip 解压缩后,原压缩包文件不删除。unzip filename

例如:将压缩文件 text.zip 在指定目录 /tmp下解压缩,如果已有相同的文件存在,要求 unzip命令 不覆盖原先的文件。

unzip -n test.zip -d /tmp

-n:解压缩时不要覆盖原有的文件;

-d<目录>:指定文件解压缩后所要存储的目录;

-v:执行时显示详细的信息;

-o:不必先询问用户,unzip 执行后覆盖原有的文件;unzip -o test.zip -d tmp/

查看压缩文件目录,但不解压。unzip -v test.zip

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
-rw-r--r--. root root Mar : test1.zip
drwxr-xr-x. root root Mar : test4
-rw-r--r--. root root Mar : test4.zip
[root@ryan linux]# rm -rf test4
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
-rw-r--r--. root root Mar : test1.zip
-rw-r--r--. root root Mar : test4.zip
[root@ryan linux]# unzip test4.zip
Archive: test4.zip
creating: test4/
extracting: test4/cp1.txt
creating: test4/testfolder/
extracting: test4/testfolder/cp2.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
-rw-r--r--. root root Mar : test1.zip
drwxr-xr-x. root root Mar : test4
-rw-r--r--. root root Mar : test4.zip
[root@ryan linux]# ls -lR test4
test4:
total
-rw-r--r--. root root Mar : cp1.txt
drwxr-xr-x. root root Mar : testfolder test4/testfolder:
total
-rw-r--r--. root root Mar : cp2.txt

3.6 xz 压缩工具

linux 默认自带 xz 压缩工具,不支持压缩目录,压缩格式为:xz -z filename,-z 可有可无,默认会删除原文件,-k 保留原文件;-0至-9调节压缩率。如果不设置,默认压缩等级是6。xz -d 待解压文件,等价于 unxz 命令;-k 保留原文件。

压缩:xz [-z] filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
drwxr-xr-x. root root Nov : test1
[root@ryan linux]# xz test1
xz: test1: Is a directory, skipping
[root@ryan linux]# xz file.log
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log.xz
drwxr-xr-x. root root Nov : test1

解压:xz -d filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log.xz
drwxr-xr-x. root root Nov : test1
[root@ryan linux]# xz -d file.log.xz
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
drwxr-xr-x. root root Nov : test1

四、打包的同时压缩

tar 命令在使用时可以直接压缩,它支持 gzip 压缩和 bzip2 压缩。

4.1 打包的同时使用 gzip 压缩

使用 -z 选项可以压缩成 gzip 格式的文件,原文件不会删除

打包并压缩:tar -czvf filename 文件或目录

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
[root@ryan linux]# tar -czvf test1.tar.gz test1
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz

解压:tar -zxvf filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# rm -rf test1
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# tar -xzvf test1.tar.gz
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz

4.2 打包的同时使用 bzip2 压缩

使用 -j 选项可以压缩成 bzip2 格式的文件,原文件不会删除

打包并压缩:tar -cjvf filename 文件或目录

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# tar -cjvf test1.tar.bz2 test1
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz

解压:tar -jxvf filename

[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz
[root@ryan linux]# tar -xjvf test1.tar.bz2
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : file.log
-rw-r--r--. root root Mar : install.log
drwxr-xr-x+ root root Dec : test
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.bz2
-rw-r--r--. root root Mar : test1.tar.gz

4.3 打包的同时使用 xz 压缩

使用 -J 选项可以压缩成 xz 格式的文件,原文件不会删除。
如果当前版本linux的tar命令参数支持使用xz压缩,则可直接使用如下命令:tar -cJvf filename.tar.xz
同理,解压的时候,如果当前版本linux的tar命令参数支持使用xz解压,则可直接使用如下命令:tar -Jxv -f filename.tar.xz
否则就要分两步,先用 xz -d 解压,变成 tar 包之后,再用 tar -xvf 解包:
xz -d finename.tar.xz
tar -xvf finename.tar

打包并压缩:tar -cJvf filename 文件或目录

[root@ryan linux]# ls -l
total
drwxr-xr-x. root root Nov : test1
[root@ryan linux]# tar -cJvf test1.tar.xz test1
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.xz

解压:tar -Jxvf filename

[root@ryan linux]# rm -rf test1
[root@ryan linux]# ls -l
total
-rw-r--r--. root root Mar : test1.tar.xz
[root@ryan linux]# tar -Jxvf test1.tar.xz
test1/
test1/cp1.txt
[root@ryan linux]# ls -l
total
drwxr-xr-x. root root Nov : test1
-rw-r--r--. root root Mar : test1.tar.xz

Linux 笔记 - 第八章 文档的打包与压缩的更多相关文章

  1. linux入门教程(十) 文档的压缩与打包

    在windows下我们接触最多的压缩文件就是.rar格式的了.但在linux下这样的格式是不能识别的,它有自己所特有的压缩工具.但有一种文件在windows和linux下都能使用那就是.zip格式的文 ...

  2. linux音频alsa-uda134x驱动文档阅读之一转自http://blog.csdn.net/wantianpei/article/details/7817293

    前言 目前,linux系统常用的音频驱动有两种形式:alsa oss alsa:现在是linux下音频驱动的主要形式,与简单的oss兼容.oss:过去的形式而我们板子上的uda1341用的就是alsa ...

  3. 在Firefox中发现一个在Linux下查看chm文档的插件

    在Firefox浏览器插件中搜索插件chmfox插件,安装后就可以在linux下通过Firefox浏览器阅读chm文档了.

  4. Linux 基础命令、文档树 和 bash

    最近发现了一个总结得更好的:bash cheatsheet 本文只是我对 linux 基础学习的一个总结,可能仅适用于复习用.算是我的 Linux 备忘录. 最基础 tab 补全 * 通配符 ctrl ...

  5. Linux下查看txt文档

    当我们在使用Window操作系统的时候,可能使用最多的文本格式就是txt了,可是当我们将Window平台下的txt文本文档复制到Linux平台下查看时,发现原来的中文所有变成了乱码. 没错, 引起这个 ...

  6. Linux内核最顶层文档

    Linux 内核文档 该文件是 Linux 内核文档树中最顶层的,会随着内核一起更新:其目的是把散乱的文档集成为一个逻辑清晰的完整版,非常欢迎改善文档,如果想做出自己的贡献,加入vger.kernel ...

  7. linux相关的帮助文档

    几乎所有linux发行版都会提供大量的有用的文档. 手册页 linux发行版包含了有关常用命令.系统调用和库函数的手册页.手册页被分成不同的章节并分别标以序号: Section      名称     ...

  8. Linux基础入门级命令文档

    Linux系统上命令的使用格式,及常用命令示例 1.命令提示符 登录系统后,第一眼看到的内容是: [root@node01 ~]# 上图就是 Linux 系统的命令提示符.那么,这个提示符的含义是什么 ...

  9. Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现

    如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位 ...

随机推荐

  1. 解决!!-- krb5-libs.x86_64被卸载,yum不能使用,ssh不能连接

    常在河边走哪有不湿鞋,常玩服务器哪有不搞挂几台,一不小心就搞挂了 今天删除 krb5-libs.x86_64下了狠功夫..... 用了命令: rpm -e --nodeps  krb5-libs.x8 ...

  2. .net软件开发脚本规范-SVN标准

    一. SVN标准 1) 提交代码前先获取最新代码 2) 提交时需要填写信息,填写任务Excel中的修改内容列,如以下任务填写“业绩考核-工作量管理”,如果发生修改再次提交,在其后加上修改原因,例“业绩 ...

  3. Selenium+java - PageFactory设计模式

    前言 上一小节我们已经学习了Page Object设计模式,优势很明显,能更好的体现java的面向对象思想和封装特性.但同时也存在一些不足之处,那就是随着这种模式使用,随着元素定位获取,元素定位与页面 ...

  4. Spring源码剖析2:Spring IOC容器的加载过程

    spring ioc 容器的加载流程 1.目标:熟练使用spring,并分析其源码,了解其中的思想.这篇主要介绍spring ioc 容器的加载 2.前提条件:会使用debug 3.源码分析方法:In ...

  5. .net测试篇之Moq行为配置

    系列目录 我们前面说过.Moq在创建模拟对象的时候,简单对象赋值默认值,引用对象赋值为null,但是有些时候接口里面还包含另一个接口对象,我们知道Moq是可以模拟一个接口对象的,我们可以通过配置让Mo ...

  6. OCP培训 MySQL OCP认证实战培训【低价送OCP考证名额】

    一.OCP培训 MySQL 5.7 OCP认证全套实战培训[低价送OCP考试名额] 课程目标: 风哥为满足想参加MySQL OCP考证的学员,而设计的一套比较全面OCP实战培训课程. 课程涉及MySQ ...

  7. 详解golang net之transport

    关于golang http transport的讲解,网上有很多文章读它进行了描述,但很多文章讲的都比较粗,很多代码实现并没有讲清楚.故给出更加详细的实现说明.整体看下来细节实现层面还是比较难懂的. ...

  8. tomcat8 编写字符编码Filter过滤器无效问题

    做一个解决全站的字符编码过滤器,过滤器类和配置如下: 过滤器类: package com.charles.web.filter; import java.io.IOException; import ...

  9. Oracle数据库测试和优化最佳实践: OTest介绍 (转)

    当前Oracle数据库最佳测试工具OTest *  Otest是用于Oracle数据库测试.优化.监控软件. *  Otest是免费提供给Oracle客户和广大DBA工程师使用的软件.由原厂技术专家王 ...

  10. [系列] - go-gin-api 路由中间件 - 日志记录(三)

    目录 概述 gin.Logger() 自定义 Logger() 源码地址 go-gin-api 系列文章 概述 首先同步下项目概况: 上篇文章分享了,规划项目目录和参数验证,其中参数验证使用的是 va ...