当前位置: > Linux教程 > 系统运维 >

linux 压缩 解压缩 详解

时间:2015-12-17 00:08来源:linux.it.net.cn 作者:IT
一、解压缩命令简介


tar命令
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg这条命令是将所有。jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif这条命令是将所有。gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar这条命令是解出all.tar包中所有文件,-x是解开的意思



二、压缩命令使用

tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg // 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
三、解压命令使用
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
四、总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
rar for linux :
命令格式: rar < command> -< swith 1> -< swith N> < archive> < files...>
< @listfiles...> < path_to_extract\>
< Commands>
a 向压缩包中添加文件
c 添加压缩注释
cf 添加文件注释
cw 向文件中写压缩注释
d 从压缩包中删除文件
e 在当前目录下解压缩文件
f 刷新压缩文件中的文件
i[par]=< str> 在压缩包中查找指定字符串
k 锁住压缩包
l[t,b] 列出压缩包的内容[t(technical)详细列表,b(bare)简单列表]
m[f] 向压缩包里移动内容[f(files only)只移动文件]
p 在标准输出上打印文件内容
r 修复压缩包
rc 修复丢失卷
rn 重命名压缩的文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[name|-] 将压缩包转换为自解压文件,或从自解压文件转换为压缩包
t 测试压缩文件
u 更新压缩包中的文件
v[t,b] 列出压缩包中文件(冗长型)[t(technical)详细列表,b(bare)简单列表]
x 以全路径方式解压文件
< Switches>
- 停止switches扫描
ad 在目的路径后添加压缩文件名
ag[format] 用当前日期生成压缩文件名
ap< path> 设置压缩包内部的路径
as 同步压缩内容
av 设置授权认证(注册版功能)
av- 禁用授权认证检查
c- 禁止内容显示
cfg- 不读取设置
cl 将名称转换为小写
cu 将名称转换为大写
df 在压缩完成后删除源文件
dh 打开共享文件
ds 对于固实压缩包,禁用名称排序
e< attr> 设置文件不包含的属性
ed 不添加空目录
en 不设置‘压缩文件尾标志’块
ep 在名称中去掉路径
ep1 在名称中去掉基本路径
ep2 展开全路径
f 刷新文件
hp[password] 对文件数据和文件头都进行加密
idp 禁用百分比显示
ierr 给标准错误输出发送所有信息
ilog[name] 生成错误日志文件(注册版功能)
inul 禁用所有信息
isnd 启用声效
k 锁住压缩包
kb 保留破损的解压文件
m< 0..5> 设置压缩率(0-存储...3-默认...5-最大)
mc< par> 设置高级压缩参数
md< size> 以KB显示大小(64,128,256,512,1024,2048,4096 或者A-G)
ms[ext; ext] 指定存储的文件类型
o+ 覆盖已存在文件
o- 不覆盖已存在文件
ol 将符号链接保存为链接而不是文件
ow 保存或恢复文件属主/组
p[password] 设置密码
p- 不查询密码
r 对子目录内容循环
r0 只对通配符进行子目录内容循环
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[< N> ,v[-],e] 创建固实压缩包
s- 禁用固实压缩
sfx[name] 创建自解压压缩包
t 压缩后进行解压测试
ta< date> 处理在< date> (YYYYMMDDHHMMSS格式)日期后修改的文件
tb< date> 处理在< date> (YYYYMMDDHHMMSS格式)日期前修改的文件
tk 保留初始压缩时间
tl 设置压缩时间为最新文件的时间
tn< time> 处理在< time> 时间后修改的文件
to< time> 处理在< time> 时间前修改的文件
ts< m,c,a> [N] 保存或恢复文件时间(修改,创建,访问)
u 更新文件
v 以自动分卷大小分卷压缩,或列出所有分卷
v< size> [k,b] 以< size> *1000大小分卷压缩[k-*1024, b-*1]
ver[n] 文件版本控制
vn 使用旧的分卷命名方式
vp 每次分卷前暂停
w< path> 设置工作目录
x< file> 排除指定文件
x@ 从标准输入中读取要排除的文件名
x@< list> 排除列表文件中指定的文件
y 对所有问题均回复yes
z< file> 从文件中读取压缩包内容
============================================
查看压缩包中的文件
$rar l XXX.rar
或者
$rar v XXX.rar
查看压缩包中的文件(只看有什么文件)
$rar lb XXX.rar
或者
$rar vb XXX.rar
查看压缩包中的文件(详细信息)
$rar lt XXX.rar
或者
$rar vt XXX.rar
============================================
把压缩包的内容解压到当前目录
$rar e XXX.rar
把压缩包的内容解压到指定目录,比如/home/yxd/tmp/下面
$rar e XXX.rar /home/yxd/tmp/
把压缩包解的内容压到指定目录,比如/home/yxd/tmp/下面,包含压缩包中的路径
$rar x XXX.rar /home/yxd/tmp/
============================================
压缩指定的一个文件,比如aaa,以默认压缩率
$rar a XXX.rar aaa
压缩指定的一个文件,比如aaa,以最大压缩率
$rar a -m5 XXX.rar aaa
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件
$rar a XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件和所有子目录
$rar a -r XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录下的所有文件和所有子目录,但是不包含空目录
$rar a -r -ed XXX.rar ddd/
压缩指定的一个目录下的所有文件,比如ddd目录,连目录也一起压缩,包括子目录
$rar a XXX.rar ddd
============================================
分卷压缩指定的一个文件,比如aaa,分卷大小为5000B
$rar a -v5 XXX.rar aaa
分卷压缩指定的一个文件,比如aaa,分卷大小为5k(5*1024B)
$rar a -v5k XXX.rar aaa
分卷压缩指定的一个文件,比如aaa,分卷大小为5B
$rar a -v5b XXX.rar aaa
zip for linux :
zip
功能说明:压缩文件。
在压缩时,不需先打包,打包后再压缩,压缩效率反而还更低,默认是-9,即最大效率
zip [options] distination_file source
补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会产生具有".zip"扩展名的压缩文件。
参  数:
-A 调整可执行的自动解压缩文件。
-b工作目录> 指定暂时存放文件的目录。(不需要)
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。 (utility)
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 (utility)
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。(utility)
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。 (utility)
-S 包含系统和隐藏文件。
-t日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-压缩效率> 压缩效率是一个介于1-9的数值。数越大压缩效率越高(默认为9) (utility)
例如:将目录/home/zhang/files下的所有文件压缩,并存储到当前目录,包名为files,它会自动在 files后面加上.zip
zip -r9 ~/files /home/zhang/files
参数9表示最大的压缩率,压缩结果为files.zip
如果对目录进行压缩,就需加参数-r
如果在压缩文件中,你不想包含原有的目录,只想其中的文件,就需参数-j
zip -j9 ~/files /home/zhang/files/*
unzip
功能说明:解压缩zip文件
语  法:unzip [-cflptuvz][-agCjLMnoqsVX][-P 密码>][.zip文件][文件][-d 目录>][-x 文件>] 或 unzip [-Z]
补充说明: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。
[.zip文件] 指定.zip压缩文件。
[文件] 指定要处理.zip压缩文件中的哪些文件。
-d目录> 指定文件解压缩后所要存储的目录。(utility)
-x文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
例如: 对上面压缩的文件解压到当前目录
unzip files.zip
如果你想将压缩的文件解压到当前主目录下的hat目录下:
unzip -d ~/hat files.zip
gzip
功能说明:压缩文件。
如果对一个文件夹进行压缩时,他会将各个文件分别进行压缩,目录仍然存在,不会被压缩。所以,如果想一个目录下的所有文件被压缩成一个压缩
  包的话,就得先打包,再压缩,而zip就不需要。压缩文件只能是本地目录,不能指定保存目录,除非和tar合用
语  法:gzip [-acdfhlLnNqrtvV][-S 压缩字尾字符串>][-压缩效率>][--best/fast][文件...] 或 gzip [-acdfhlLnNqrtvV] [-S 压缩字尾字符串>][-压缩效率>][--best/fast][目录]
补充说明:gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。它不会对符号链接进行压缩
参  数:
 -a或--ascii  使用ASCII文字模式。
 -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
 -d或--decompress或----uncompress  解开压缩文件。
 -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
 -h或--help  在线帮助。
 -l或--list  列出压缩文件的相关信息。
 -L或--license  显示版本与版权信息。
 -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。
 -N或--name  压缩文件时,保存原来的文件名称及时间戳记。 (utility)
 -q或--quiet  不显示警告信息。
 -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -S压缩字尾字符串>或----suffix压缩字尾字符串>  更改压缩字尾字符串。
 -t或--test  测试压缩文件是否正确无误。
 -v或--verbose  显示指令执行过程。
 -V或--version  显示版本信息。
 -压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。 (utility)
 --best  此参数的效果和指定"-9"参数相同。
 --fast  此参数的效果和指定"-1"参数相同。
 
例如:将目录/home/zhang/files下的所有文件压缩,它会自动在files下的所有文件后面加上.gz
gzip -r9 /home/
参数9表示最大的压缩率
如果对目录进行压缩,就需加参数-r
对上面压缩的文件进行解压
gzip -dr /home/
gunzip(gnu unzip)
功能说明:解压文件。
语  法:gunzip [-acfhlLnNqrtvV][-s 压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s 压缩字尾字符串>][目录]
补充说明:gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。可以识别.tgz(.tar.gz的缩写), .taz(.tar.z的缩写),.gz, -gz, .z, -z, _z or .Z和没有后缀,但被gzip压缩的
参  数:
 -a或--ascii  使用ASCII文字模式。
 -c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。
 -f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
 -h或--help  在线帮助。
 -l或--list  列出压缩文件的相关信息。
 -L或--license  显示版本与版权信息。
 -n或--no-name  解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。
 -N或--name  解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。 (utility)
 -q或--quiet  不显示警告信息。
 -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
 -S压缩字尾字符串>或--suffix压缩字尾字符串>  更改压缩字尾字符串。
 -t或--test  测试压缩文件是否正确无误。
 -v或--verbose  显示指令执行过程。
 -V或--version 显示版本信息。
 
 例如:解压时,必须给出完整的路径,因为压缩时,是对文件,没有对一个目录整体
  如: gunzip /home/zhang/files/*
 
bzip2
bzip2, bunzip2 - a block-sorting file compressor, v1.0.2
bzcat - decompresses files to stdout
bzip2recover - recovers data from damaged bzip2 files
如果对一个文件夹进行压缩时,他会将各个文件分别进行压缩,目录仍然存在,不会被压缩。所以,如果想一个目录下的所有文件被压缩成一个压缩包的话,就得先打包,再压缩,而zip就不需要。压缩文件只能是本地目录,不能指定保存目录,除非和tar合用
只对文件进行压缩,不能对目录进行压缩,因为它没有-r选项
  usage: bzip2 [flags and input files in any order]
-c --stdout
Compress or decompress to standard output.
-d --decompress
Force decompression. bzip2, bunzip2 and bzcat are really the
same program, and the decision about what actions to take is
done on the basis of which name is used. This flag overrides
that mechanism, and forces bzip2 to decompress.
-z --compress
The complement to -d: forces compression, regardless of the
invocation name.
-t --test
Check integrity of the specified file(s), but don't decompress
-f --force
Force overwrite of output files. Normally, bzip2 will not over-
write existing output files. Also forces bzip2 to break hard
links to files, which it otherwise wouldn't do.
bzip2 normally declines to decompress files which don't have the
correct magic header bytes. If forced (-f), however, it will
pass such files through unmodified. This is how GNU gzip
behaves.
-k --keep
Keep (don't delete) input files during compression or decompres-
sion.
-s --small
Reduce memory usage, for compression, decompression and testing.
Files are decompressed and tested using a modified algorithm
which only requires 2.5 bytes per block byte. This means any
file can be decompressed in 2300k of memory, albeit at about
half the normal speed.
During compression, -s selects a block size of 200k, which lim-
its memory use to around the same figure, at the expense of your
compression ratio. In short, if your machine is low on memory
(8 megabytes or less), use -s for everything. See MEMORY MAN-
AGEMENT below.(现在的机子不存在这种问题)
-q --quiet
Suppress non-essential warning messages. Messages pertaining to
I/O errors and other critical events will not be suppressed.
-v --verbose
Verbose mode -- show the compression ratio for each file pro-
cessed. Further -v's increase the verbosity level, spewing out
lots of information which is primarily of interest for diagnos-
tic purposes.
-L --license -V --version
Display the software version, license terms and conditions.
-1 (or --fast) to -9 (or --best) (在磁带上非常有用,因为在磁带上得指定压缩块的大小,解压缩时也得告诉其块的大小)
Set the block size to 100 k, 200 k .. 900 k when compressing.
Has no effect when decompressing.
The --fast and --best aliases are primarily for GNU gzip compat-
ibility. In particular, --fast doesn't make things signifi-
cantly faster. And --best merely selects the default behaviour.
-- Treats all subsequent arguments as file names, even if they
start with a dash. This is so you can handle files with names
beginning with a dash, for example: bzip2 -- -myfilename.
--repetitive-fast --repetitive-best
These flags are redundant in versions 0.9.5 and above. They
provided some coarse control over the behaviour of the sorting
algorithm in earlier versions, which was sometimes useful.
0.9.5 and above have an improved algorithm which renders these
flags irrelevant
If invoked as `bzip2', default action is to compress.
as `bunzip2', default action is to decompress.
as `bzcat', default action is to decompress to stdout.
例如:将目录/home/zhang/files下的所有文件压缩,它会自动在files下的所有文件后面加上.bz2, 并且将块的大小设置为900k字节,也就是说,以900k字节作为一个块进行压缩
bzip2 -9z /home/zhang/files
对上面压缩的文件进行解压
bzip2 -d /home/zhang/files/*
bzip2和gzip的比较
  Jeremy Zawodny 最新的测试发现,bzip2有更高的压缩比,但有非常明显的时间开销,无论是在压缩时还是在解压时。
gzip3d.png  他分别用了gzip和bzip2,并各自带了命令行参数"-9",压缩一个2,661,512 (or 2.5GB)字节的文件,然后解压缩,并将这个过程重复了一次,得结果如下:
压缩用时 压缩后文件大小 解压用时
gzip 14:31 349,736 0:55
bzip2 39:44 275,344 9:46
tar and gzip
将/usr/src下的各个文件打包后,再压缩,包名为src.tar.gz
tar zvfc src.tar.gz /usr/src
解压压缩包
tar xvfz src.gz
tar and bzip2
tar -cvjf archivefile.tar.bz2 file-list
example:
将/usr/src下的各个文件打包后,再压缩,包名为src.tar.bz2(the dash(-) doesn't affect the result)
tar cjfv src.tar.bz2 /usr/src
解压压缩包
tar -xvjf archivefile.tar.bz2
example:
tar vjxf src.tar.bz2
bzcat archivefile.tar.bz2 | tar -xvf -
提示,不能将bzcat改成bzip2 -d,改了后不能解包,只能解压
上面的解压,也可写成如下的形式
bzip2 -cd archivefile.tar.bz2 | tar -xvf -
最后的“-”表示接收标准输出的数据
gzip -cd archivefile.tar.bz2 | tar -xvf -
-c表明将解压后的文件输出到标准输出,只有输出到标准输出,tar命令才能使用
生成 bzip2 压缩的 tar 文件可以使用:
tar -cvf - filenames | bzip2 > archivefile.tar.bz2
生成 gzip 压缩的 tar 文件可以使用:
tar -cvf - filenames | gzip > archivefile.tar.bz2


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容