shell: tar, bz2, gz 等压缩文件

来源:互联网 发布:关晓彤用什么软件直播 编辑:程序博客网 时间:2024/05/16 06:08

在打包的时候,我们需要将里面的 .svn 版本控制的信息给去掉,不然会导致一些未知的问题。

一般是这样做的:

  • 建立 tmp 目录,将要打包的文件复制进去,然后打包完成之后将 tmp 目录删除掉

  • 写一个 脚本循环遍历目录,将下面的 .svn 删除

不过上面的方法说实话都比较土,然后我就通过 man,发现了 tar 的一个配置。

问题分析:

使用 tar 的 --exclude-vcs 将很方便的解决这个问题。

具体描述:

‘--exclude-vcs’Exclude files and directories used by following version control systems: ‘CVS’, ‘RCS’, ‘SCCS’, ‘SVN’, ‘Arch’, ‘Bazaar’, ‘Mercurial’, and ‘Darcs’.As of version 1.26, the following files are excluded:‘CVS/’, and everything under it‘RCS/’, and everything under it‘SCCS/’, and everything under it‘.git/’, and everything under it‘.gitignore’‘.cvsignore’‘.svn/’, and everything under it‘.arch-ids/’, and everything under it‘{arch}/’, and everything under it‘=RELEASE-ID’‘=meta-update’‘=update’‘.bzr’‘.bzrignore’‘.bzrtags’‘.hg’‘.hgignore’‘.hgrags’‘_darcs’

debian 6 下面是 1.23 的 tar,经过测试,也能够去除 .svn 文件

总结:

熟悉使用工具,能够提高生产效率。


tar命令使用 

压缩:tar cvfz 目标文档 源文档1 [源文档2...]
例如:tar cvfz m.tar.gz hello.cpp hello.h //m.tar.gz是目标文档,hello.cpp和hello.h是源文档
解压:tar xvfz 目标文档
例如:tar xvfz m.tar.gz //在当前目录下将压缩包文档m.tar.gz解压缩

上面的简单用法基本够用了,以下是从别的地方转来的其他一些用法,但我从来没用过,暂时存放一下。

1.文档或目录打包:tar -cvf /u0/temp2.tar /usr/lib

将/usr/lib目录下的文档和子目录打包成一个文档库为/u0/temp2.tar。

tar -cvf /u0/temp2.tar /usr/lib *.c *.f

将/usr/lib目录下的*.c *.f等文档(不含子目录)打包。注意:假如指定文档如*.c *.f或*.*,则打包时均不含子目录。假如指定为.或*,则含子目录。

2.压缩:compress /u0/temp2.tar压缩为/u0/temp2.tar.z

3.解压:uncompress /u0/temp2.tar.Z则还原为/u0/temp2.tar

4.解包展开:tar -xvf /u0/temp2.tar

若以相对路径打包的,解包时,以相对路径存放展开的文档数据;若以绝对路径打包的,解包时,以绝对路径存放展开的文档数据。若指定展开的文档名,须注意文档的目录路径。

5.显示:tar -tvf /u0/temp2.tar 显示文档库内的文档名称。当指定文档名时,亦须注意文档的路径。

tar命令

tar能够为文档和目录创建档案。利用tar,用户能够为某一特定文档创建档案(备份文档),也能够在档案中改变文档,或向 档案中加入新的文档。tar最初被用来在磁带上创建档案,现在,用户能够在任何设备上创建档案,如软盘。利用tar命令,能够把一大堆的文档和目录全部打 包成一个文档,这对于备份文档或将几个文档组合成为一个文档以便于网络传输是很有用的。Linux上的tar是GNU版本的。

语法:tar [主选项 辅选项] 文档或目录

使用该命令时,主选项是必须要有的,他告诉tar要做什么事情,辅选项是辅助使用的,能够选用。

主选项:

c创建新的档案文档。假如用户想备份一个目录或是一些文档,就要选择这个选项。

r 把要存档的文档追加到档案文档的未尾。例如用户已作好备份文档,又发现更有一个目录或是一些文档忘记备份了,这时能够使用该选项,将忘记的目录或文档追加到备份文档中。

t列出档案文档的内容,查看已备份了哪些文档。

u 更新文档。就是说,用新增的文档取代原备份文档,假如在备份文档中很难找到要更新的文档,则把他追加到备份文档的最后。

x从档案文档中释放文档。

辅助选项:

b该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。

f使用档案文档或设备,这个选项通常是必选的。

k保存已存在的文档。例如我们把某个文档还原,在还原的过程中,碰到相同的文档,不会进行覆盖。

m在还原文档时,把任何文档的修改时间设定为现在。

M创建多卷的档案文档,以便在几个磁盘中存放。

v周详报告tar处理的文档信息。如无此选项,tar不报告文档信息。

w 每一步都需要确认。

z 用gzip来压缩/解压缩文档,加上该选项后能够将档案文档进行压缩,但还原时也一定要使用该选项进行解压缩。 

例1:把/home目录下包括他的子目录全部做备份文档,备份文档名为usr.tar。

$ tar cvf usr.tar /home

例2:把/home目录下包括他的子目录全部做备份文档,并进行压缩,备份文档名为usr.tar.gz 。

$ tar czvf usr.tar.gz /home

例3:把usr.tar.gz这个备份文档还原并解压缩。

$ tar xzvf usr.tar.gz

例4:查看usr.tar备份文档的内容,并以分屏方式显示在显示器上。

$ tar tvf usr.tar | more

要将文档备份到一个特定的设备,只需把设备名作为备份文档名。

例5:用户在/dev/fd0设备的软盘中创建一个备份文档,并将/home 目录中任何的文档都拷贝到备份文档中。

$ tar cf /dev/fd0 /home

要恢复设备磁盘中的文档,可使用xf选项:

$ tar xf /dev/fd0

如 果用户备份的文档大小超过设备可用的存贮空间,如软盘,您能够创建一个多卷的tar备份文档。M选项指示tar命令提示您使用一个新的存贮设备,当使用M 选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就能够把tar档案存入几张磁盘中。

$ tar cMf /dev/fd0 /home

要恢复几张盘中的档案,只要将第一张放入软驱,然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。

$ tar xMf /dev/fd0


Linux下.bz2与.gz文件的区别

.bz2和.gz都是linux下压缩文件的格式,有点类似windows下的.zip和.rar文件。

.bz2和.gz的区别在于,前者比后者压缩率更高,后者比前者花费更少的时间。也就是说同一个文件,压缩后,.bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。

压缩实例:对一个599M的文件夹workspace进行压缩

bz2文件

time tar -jcvf j.tar.bz2 workspace/

340M 56.8%

real 13m20.975s

user 11m13.872s

sys 0m5.985s

gz文件

time tar -zcvf z.tar.gz workspace/

348M 58.1%

real 2m10.305s

user 0m54.228s

sys 0m7.399s

总结:压缩后,.bz2文件只比.gz文件小了8M,但却花费了后者6倍多的时间。当然,压缩的比率,时间跟被压缩文件的格式,大小等因素有关。所以,本例不能说明使用gz比使用bz2更划算,但至少可以证明bz2比gz压缩率更高,gz比bz2花费更少的时间。


原创粉丝点击