文件数量太多, 如果需要拷来拷去是不是很麻烦? 怎么办? 打包!
文件太大,通过网络下载、传输会不会很费时间? 怎么办? 压缩!
在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 #解压缩