Linux基础教程:对文件打包压缩


一、须知

  • 文件数量太多, 如果需要拷来拷去是不是很麻烦?    怎么办?  打包!
  • 文件太大,通过网络下载、传输会不会很费时间?    怎么办?  压缩!

在Linux环境中,打包压缩文件的扩展名多是:【*.tar, *.tar.gz, *.gz, *.bz2, *.tar.xz】这些文件统称为“tar”包, 想想为什么会有这样的扩展名么? 不是说过 Linux的扩展名没有什么用吗?  【不同的后缀,表明所使用的压缩算法不同, 压缩比从低到高的排序是: gz < bz2 < xz ; 压缩速度则正好相反 gz > bz2 > xz】

是的。 文件扩展名对于Linux来说, 并没有任何卵用。 然而、但是, 由于Linux支持的压缩命令很多,而且不同指令所采用的压缩技术不相同,当然彼此之间可能就无法互通(压缩、解压缩)。所以, 当我们下载到某个压缩文件时,自然就需要知道该档案是由哪种压缩指令制作的,好用来对照进行解压缩。

也就是说,虽然Linux文件的扩展名和其属性没有绝对关系,但是为了便于我们易于识别,所以适当的扩展名还是必要的。

打包: 实质将许多文件和目录打包成一个文件。
压缩:把大文件或目录通过压缩算法变成一个较小的文件。

大多命令仅能针对单一文件来进行压缩,gzip与bzip2也能对目录进行压缩,但是结果为:将目录内的所有文件“分别、单独”进行压缩操作。

一、文件的打包和压缩
tar : 打包、压缩一个命令全搞定。  版本稍高的 tar 命令, 选项前的 - , 是可选的。
解压缩“tar”包非常简单,只需要这样:

12 $  tar  xf  filename
$  tar  xf  filename  -C /tmp    # 解压到/tmp目录

注意: filename 就是需要解压缩"tar"包的文件名,而且使用后一种形式的时候,选项 f 一定要放到最后。
创建“tar”包
1 $  tar -cvf  filename.tar  FILES

指定压缩算法: z 代表 gz, j 代表 bz2, J 代表 xz。
123 $  tar  -zcvf  filename.tar.gz  FILES
$  tar  -jcvf  filename.tar.bz2  FILES
$  tar  -Jcvf  filename.tar.xz  FILES

注意:其中FILES表示被打包盒压缩的文件或目录名。

仅解开单一文件的方法
1234 ## 首先 –jtvf 查看需要解压的文件名
tar -jtvf filename.tar.bz2    # 查询需要解压的文件名:假设为 etc/abc。
## 解压,指定 etc/abc 文件名
tar –jxvf filename.tar.bz2  etc/abc

记忆: 记住 tar xvf  然后 把 x 位置替换为 c , t 就行了。

  • 压缩(选项:c):tar –jcvf  filename,tar.bz2    要被压缩的文件或目录名称(可多个)
  • 查询(选项:t):tar –jtvf  filename,tar.bz2
  • 解压缩(选项:x):tar –jxvf  filename.tar.bz2 –C  欲解压缩的目录

因为-f参数后必须紧接 “要新创建的文件名”。
 tar默认情况下会把绝对路径前的 / 去掉, 这样在恢复的时候, 如果不用-C / 指定根目录为其相对目录, tar会在把解包后的目录结构放在当前目录。如果需要用绝对路径解压或者压缩呢, 使用-P选项吧

gzip & bzip2命令
gzip 常用选项:
-c    : 将压缩输出到 stdout,可通过重定向处理

-d  : 解压缩

-v  : 详细信息

-#  : 压缩比 1-9

bzip 同gzip的用法一样。-k选项 保留原文件
总结:

  • gzip和bzip2 不会保留原文件,而新生成一个压缩文件
  • 只能对单个文件压缩

zip & unzip 命令:
# zip all.zip *.jpg    #这条命令是将所有.jpg的文件压缩成一个zip包 
# unzip all.zip        #解压缩

本文永久更新链接地址

相关内容