转载:http://www.1987.name/659.html

数据压缩归档和备份是系统管理的日常工作,定期备份不可小视,归档和压缩对于系统管理员或是普通用户来说都经常用到的操作,有很多中压缩格式,需要结合不同的使用方法才能达到最佳的压缩效果。

使用tar归档

tar命令可以用来归档文件,用它可以将多个文件保存为单个文件,同时保留所有文件的属性,比如所有者、权限等。

常用选项

  • -a自动判断压缩格式
  • -c建立一个压缩文件的参数指令。
  • -x解开一个压缩文件的参数指令。
  • -t查看tarfile里面的文件。
  • -r向归档文件中追加文件。
  • -d比较归档文件与文件系统的内容。
  • -u通过检查时间戳来更新归档文件中的内容。
  • -z调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩。
  • -j调用bzip2来压缩归档文件。
  • -v解压缩的过程中显示文件。
  • -f使用归档名,归档名必须紧跟在-f之后。
  • -p使用原文件的原来属性(属性不会依据使用者而变)。
  • -P可以使用绝对路径来压缩。
  • -N yyyy/mm/dd比日期yyyy/mm/dd还要新的才会被归档。
  • -C指定需要将文件提取到哪个目录。
  • -A合并多个归档文件。
  • -X排除文件列表中的文件名。
  • --exclude FILE排除FILE。
  • --exclude-vcs排除版本控制系统目录。

常见用法

-c选项创建归档文件,-f是指定归档文件名:

tar -cf test.tar f1 f2 f3 f4 f5...

使用-r追加选项向归档文件中追加文件:

tar -rvf test.tar new_file

使用-t查看归档文件里面的内容:

tar -tf test.tar

使用-v或者-vv可以显示详细的内容信息:

tar -tvvf inotify-tools-3.14.tar.gz
drwxrwxrwx 1000/1000 0 2010-03-14 21:53:46 inotify-tools-3.14/
-rw-r--r-- 1000/1000 39 2010-03-12 21:53:47 inotify-tools-3.14/AUTHORS
...
-rwxr-xr-x 1000/1000 18615 2010-03-12 21:53:47 inotify-tools-3.14/depcomp

使用-x将归档文件提取出来:

tar -xf test.tar

使用-C指定需要将文件提取到/data/test下:

tar -xf test.tar -C /data/test

在归档文件中提取指定的文件:

tar -xvf test.tar file1 file5

在tar中使用stdin和stdout

在归档时,可以将stdout指定为输出文件,这样另一个命令就可以通过管道符将它作为stdin,并进行其他处理:

tar -cf - file1 file2 file3 | tar -xvf - -C /data/test

拼接两个归档文件

使用-A选项拼接两个归档文件,拼接后的文件名是test1.tar:

tar -Af test1.tar tet2.tar

通过时间戳来更新归档文件中的内容,使用-u选项指明只有比归档文件中的同名文件更新的时候才进行添加:

tar -uvvf 1.tar ddd
-rw-r--r-- root/root 4 2013-01-05 14:46:36 ddd

使用-d来比较归档文件和文件系统中的差别:

tar -df 1.tar aaa
aaa: Mod time differs
aaa: Size differs
aaa: Mod time differs
aaa: Size differs

使用--delete从归档文件中删除文件:

tar -f test.tar --delete file1 file2...

通过--exclude从归档文件中排除部分文件

tar -cf test.tar * --exclude "*.jpg"

将需要排除的文件写入列表文件同时配合-X选项排除它们:

cat list
file1
file2 tar -cf test.tar * -X list

这样是排除了file1和file2两个文件。

排除版本控制系统目录

通常使用tar归档文件来分发源码,大多数源码都是使用版本控制系统进行维护,常见的有subversion、git、mercurial、cvs等,版本控制系统中的代码目录包含用来管理版本的特殊目录,比如.svn、.git。为了在归档时排除这些目录,可以使用tar命令的--exclude-vcs选项排除它们。

tar --exclude-vcs -czvvf source_code.tar.gz svn_dir

打印归档后文件总字节数

tar -cf 3.tar * --totals
Total bytes written: 40960 (40KiB, 21MiB/s)

压缩归档文件

归档文件通常被压缩成以下格式之一:

  • file.tar.gz  (-z选项指定gzip格式)
  • file.tar.bz2 (-j选项指定bunzip2格式)
  • file.tar.lzma (--lzma指定lzma格式)

使用cpio归档

cpio是类似于tar的归档格式,也可以保留文件属性,一般用于RPM软件包、Linux内核initramfs文件。cpio是以绝对路径进行归档,进行提取时cpio会使用绝对路径提取内容,不像tar那样会去除路径开头/转换为相对路径,常用的选项有:

  • -o指定输出。
  • -v打印归档文件列表。
  • -i指定输出。
  • -t列出归档文件中的内容。
  • -d提取归档文件内容。

cpio是用过stdin获取输入文件名,后将归档文件写入stdout,需要将stdout重定向到一个文件来接受cpio的输出:

echo file1 file2 file3 | cpio -ov > test.cpio

列出cpio归档文件中的内容:

cpio -it < test.cpio

从cpio归档文件中提取文件:

cpio -id < test.cpio

cpio在覆盖文件时候不会显示提示信息,会直接覆盖。

使用gunzip或gzip解压缩

gzip是Linux下常用的压缩格式,gzip、gunzip、zcat都可以处理gzip格式压缩文件。gzip只能够压缩单个文件,不能压缩多个文件。gzip在压缩时候会删除原文件,并生成一个压缩后的.gz文件。

使用gzip命令压缩文件filename:

gzip test.txt
ls
test.txt.gz

列出压缩文件的属性信息:

gzip -l test.txt.gz
compressed uncompressed ratio uncompressed_name
34 53 101.9% test.txt

使用gunzip解压.gz文件:

gunzip test.txt.gz
ls
test.txt

从stdin读取并写入到stdout:

cat filename | gzip -c > file.gz

结合tar压缩归档文件,-a是根据文件扩展名自动判断压缩格式:

tar -czvf test.tar.gz *
tar -cavf test.tar.gz *

使用zcat命令直接读取gzip格式文件:

zcat test.txt.gz
this is a test line

gzip可以指定压缩率,一共有9个级别:

  • 1级的压缩率最低,压缩速度最快。
  • 9级的压缩率最高,压缩速度最慢。
gzip -9 test.jpg

使用bunzip或bzip解压缩

bunzip2是另一种与gzip类似的压缩技术,能够生成比gzip跟小(压缩比更高)的文件。压缩后会生成一个.bz2文件。也会删除原文件生成新文件。压缩率和gzip相同。

使用bzip2进行压缩:

bzip2 filename
ls
filename.bz2

解压bzip2文件:

bunzip2 filename.bz2

结合tar压缩归档文件:

tar -cjvf test.tar.bz2 *
tar -cavf test.tar.bz2 *

使用lzma压缩

lzma是一个交新的压缩工具,比gzip和bzip2有更好的压缩率,不过大多数Linux发行版没有安装,需要自行安装。使用方法基本和gzip、bzip2一样。

用lzma压缩文件:

lzma filename
或者加上压缩等级,这样生成的压缩包更小
lzma -9 filename
上面的这种压缩方法默认会删除filename文件,如果想保留原始文件可以加上-k,如下
lzma -k -9 filename
ls
filename.lzma

上面的这些的方法只能压缩文件,无法压缩文件夹,可以先用tar将文件夹打包,然后再用lzma进行压缩即可

tar  -cf  dir.tar dir

lzma -9 dir.tar

会生成文件 dir.tar.lzma

如果要解压,可以使用tar一次性完成  tar -xf dir.tar.lzma --lzma -C ./

用unlzma加压文件

unlzma filename.lzma

结合tar压缩归档文件

tar -cvf --lzma test.tar.lzma *
tar -cavf test.tar.lzma *

用zip归档和压缩

ZIP是种流行的压缩格式,很多平台都可以使用。压缩后会另外生成.zip扩展名的压缩文件。

压缩

命令选项

  • -A 调整可执行的自动解压缩文件。
  • -b<工作目录> 指定暂时存放文件的目录。
  • -c 替每个被压缩的文件加上注释。
  • -d 从压缩文件内删除指定的文件。
  • -D 压缩文件内不建立目录名称。
  • -f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
  • -F 尝试修复已损坏的压缩文件。
  • -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
  • -i<范本样式> 只压缩符合条件的文件。
  • -j 只保存文件名称及其内容,而不存放任何目录名称。
  • -J 删除压缩文件前面不必要的数据。
  • -k 使用MS-DOS兼容格式的文件名称。
  • -l 压缩文件时,把LF字符置换成LF+CR字符。
  • -ll 压缩文件时,把LF+CR字符置换成LF字符。
  • -L 显示版权信息。
  • -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  • -n<字尾字符串> 不压缩具有特定字尾字符串的文件。
  • -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
  • -q 不显示指令执行过程。
  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
  • -S 包含系统和隐藏文件。
  • -t<日期时间> 把压缩文件的日期设成指定的日期。
  • -T 检查备份文件内的每个文件是否正确无误。
  • -u 更换较新的文件到压缩文件内。
  • -v 显示指令执行过程或显示版本信息。
  • -V 保存VMS操作系统的文件属性。
  • -w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
  • -x<范本样式> 压缩时排除符合条件的文件。
  • -X 不保存额外的文件属性。
  • -y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
  • -z 替压缩文件加上注释。
  • -$ 保存第一个被压缩文件所在磁盘的卷册名称。
  • -<压缩效率> 压缩效率是一个介于1-9的数值。

常见用法

对文件采用zip格式进行压缩:

zip file.zip file

-r选项对目录和我呢见进行递归操作:

zip -r test.zip dir file...

-u选项更新压缩文件中的内容:

zip file.zip -u new_file

从压缩文件中删除内容:

zip -d file.zip file.txt

解压

使用unzip命令解压缩zip文件。

命令选项

  • -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
  • -f 更新现有的文件。
  • -l 显示压缩文件内所包含的文件。
  • -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
  • -t 检查压缩文件是否正确。
  • -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
  • -v 执行是时显示详细的信息。
  • -z 仅显示压缩文件的备注文字。
  • -a 对文本文件进行必要的字符转换。
  • -b 不要对文本文件进行字符转换。
  • -C 压缩文件中的文件名称区分大小写。
  • -j 不处理压缩文件中原有的目录路径。
  • -L 将压缩文件中的全部文件名改为小写。
  • -M 将输出结果送到more程序处理。
  • -n 解压缩时不要覆盖原有的文件。
  • -o 不必先询问用户,unzip执行后覆盖原有文件。
  • -P<密码> 使用zip的密码选项。
  • -q 执行时不显示任何信息。
  • -s 将文件名中的空白字符转换为底线字符。
  • -V 保留VMS的文件版本信息。
  • -X 解压缩时同时回存文件原来的UID/GID。
  • -d<目录> 指定文件解压缩后所要存储的目录。
  • -x<文件> 指定不要处理.zip压缩文件中的哪些文件。

常见用法

要从zip文件中提取内容:

unzip file.zip

列出压缩文件中的内容:

unzip -l test.zip

验证压缩文件是否完整:

unzip -t test.zip

Linux数据归档和解压缩tar,cpio,gzip,bzip,lzma,zip命令使用的更多相关文章

  1. Linux文件归档和解压缩

    1.tar tar命令相当于归档,不做压缩,解压同样也是把归档文件释放出来(归档通俗上可以理解为把文件分类,把一些文件放到一个包中归类,方便用户管理) 解包:tar -zxvf file.tar #解 ...

  2. centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课

    centos  文档的压缩和打包   gzip,bzip2,xz,zip,unzip,tar,tgz  第九节课 SAS盘可以支持热插拔,看机器 tar.zip.tar -czvf 不会动源文件,gz ...

  3. C#压缩和解压缩字节(GZip)

    标题:C#压缩和解压缩字节(GZip的使用) 作用:此类在 .NET Framework 2.0 版中是新增的.提供用于压缩和解压缩流的方法和属性.定义:表示 GZip 数据格式,它使用无损压缩和解压 ...

  4. 【linux系列】压缩和解压缩tar

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  5. Linux - 常用归档、压缩命令

    1. ncompress compress命令是一个相当古老的 unix 档案压缩指令,压缩后的文件会加上一个 .Z 的后缀名,默认不会保留源文件.compress只能对文件进行压缩,若要压缩目录,先 ...

  6. linux 下 打包 和解压缩

    01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...

  7. Linux 之归档与压缩

    首先我们思考一下,归档和解压是一个概念吗?答案很明显不是啊,所谓归档,就是将一些文件归到一起,并没有对其进行压缩的操作.然而压缩则不同,见名知意.下面我们就来深入的研究一下这两个知识点吧! ----- ...

  8. linux 上传scp 压缩tar命令

    1.Linux 上传scp 1)上传文件与文件夹 scp file weblogic@xx.xxx.xxx.xxx:~/songjd/ scp -r filefolder weblogic@xxx.x ...

  9. 『学了就忘』Linux基础命令 — 32、压缩和解压缩相关命令

    目录 1.".zip"格式压缩 2.".gz"格式压缩 3.".bz2"格式压缩 4.".tar"格式打包 5.打包和压 ...

随机推荐

  1. deep learning 的java库

    deepLearning4j: https://github.com/deeplearning4j/libnd4j/issues/208                       deepLearn ...

  2. 40 个顶级 jQuery 图片、内容滑块和幻灯片(转)

    在这个快速发展的网络世界中,我们使用图片.内容滑块和幻灯片来给网站实现良好.有吸引力的外观.你可以吸引浏览者借助图像滑块让网站更加具有活力.使用 JavaScript 可以轻松实现轻量级的图片和内容滑 ...

  3. SharePoint咨询师之路:备份和恢复系列二 - 备份服务器场

    本系列包括: 备份服务器场和配置 备份web和服务应用程序 备份内容数据库 备份网站集 备份自定义项 根据“SharePoint咨询师之路:备份和恢复系列--制定备份计划”我们制定了一下备份计划如下: ...

  4. forms

    http://www.cnblogs.com/bomo/p/3309766.html http://www.cnblogs.com/leonwang/archive/2013/03/05/294457 ...

  5. Gridheh 垂直居中

    Gridheh 垂直居中 上下居中 each columns  set layout ColumnDefValues.Layout = tlCenter 有colResize,拖动调整列宽. 但是没有 ...

  6. CameraComponent Quality

    CameraComponent1.Quality := TVideoCaptureQuality.HighQuality; procedure TCameraComponentForm.Set720p ...

  7. 3.VS2010C++相关文件说明

    stdafx.h说明:stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展).所谓头文件预编译,就是把一个工程(Proj ...

  8. Xcode环境配置mysql

    本文默认mysql安装目录为/usr/local/mysql 在项目的header search paths中添加/usr/local/mysql/includ 2.在项目的library searc ...

  9. Problems running django-admin

    “command not found: django-admin”¶ django-admin should be on your system path if you installed Djang ...

  10. HDU 4593 Robot (水题)

    题意:有 n 个数,其中有两个数中相同的,让你找出这个数. 析:太简单了么,只要用数组下标记一下这个数的数量即可. 代码如下: #include <iostream> #include & ...