".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。- 命令名称:tar。
- 英文原意:tar。
- 所在路径:/bin/tar。
- 执行权限:所有用户。
- 功能描述:打包与解打包命令。
% e8 L Z& _0 I& K- E" y2 U 打包命令格式[root@localhost ~]#tar [选项] [-f 压缩包名] 源文件或目录 选项:- -c:打包;
- -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
- -v:显示打包文件过程;. E g. }2 p' e
2 B, r) S+ a! b' S+ z9 y: _% {) z【例 1】基本使用。
$ l# E1 \8 q* R" S: _+ J! K我们先打包一个文件练练手。
3 f9 l n5 W6 a0 E* s0 v8 X' S[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg" q8 n- @' [4 P+ r
#把anacondehks.cfg打包为 anacondehks.cfg.tar文件 选项"-cvf"一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用".tar"作为扩展名。那打包目录呢?我们也试试:
0 \" k2 e" j) Q- i[root@localhost ~]# ll -d test/ T9 j8 ~" p0 {+ F9 Z
drwxr-xr-x 2 root root 4096 6月 17 21:09 test/
1 q; D$ ^, l+ n2 w#test是我们之前的测试目录
: e- O1 K% _' v8 t- }2 T' E6 W[root@localhost ~]# tar -cvf test.tar test/% l' I8 W8 ^4 K5 L2 d, i y
test/
' }; d4 \( B7 Z# `2 T; |% etest/test3% K# M- _3 a" p/ R
test/test26 h x) c5 B [/ R' h4 J) k$ R; S* y7 k
test/test1
, |+ l( N3 m% O3 A#把目录打包为test.tar文件& I( Y1 ^1 P9 u- o4 \( C
tar命令也可以打包多个文件或目录,只要用空格分开即可。例如:+ r+ I3 K/ p+ c' A4 h
[root@localhost ~]# tar -cvf ana.tar anaconda-ks.cfg /tmp/6 V+ \9 ~% ^. f5 Q/ y5 O
#把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包 : C6 Q/ U) }! A; j& z
【例 2】打包压缩目录。
* ?: N0 H7 M; o% V x2 R; }我们已经解释过了,压缩命令不能直接压缩目录,我们就先用 tar 命令把目录打成数据包,然后再用 gzip 命令或 bzip2 命令压缩。例如:
2 H3 _) l0 H' s) N0 b[root@localhost ~]#ll -d test test.tar
' I6 R" {* d5 n, j5 u% Q. j1 Ydrwxr-xr-x 2 root root 4096 6月 17 21:09 test& F* j) d" I" G6 h. H
-rw-r--r-- 1 root root 10240 6月 18 01:06 test.tar( J d$ ^/ v/ z+ l& A# q
#我们之前已经把test目录打包成test.tar文件
; |( L! W2 r7 B' Q: d( T[root@localhost ~]# gzip test.tar
3 K- v. u9 _: f+ S# }[root@localhost ~]# ll test.tar.gz
+ p! ~+ C: s8 x# j/ j# @8 W$ i) u-rw-r--r-- 1 root root 176 6月 18 01:06 test.tar.gz* h n1 {" q9 I& C+ d
#gzip命令会把test.tar压缩成test.tar.gz
+ r( Y% Z; k+ a4 C[root@localhost ~]# gzip -d test.tar.gz
+ B; y* q: X; R8 R: g1 r! e#解压缩,把test.tar.gz解压缩为test.tar, J$ r, M% \7 B
[root@localhost ~]# bzip2 test.tar' m% O, z5 ?$ P2 e7 G
[root@localhost ~]# ll test.tar.bz2! o* h8 s8 I, S: ~- T
-rw-r--r-- 1 root root 164 6月 18 01:06 test.tar.bz2* p1 Z% s8 y5 j- i
#bzip2命令会把test.tar压缩为 test.tar.bz2格式 解打包命令格式".tar"格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:
. S i1 C- t, W( c* f8 Y- B1 n[root@localhost ~]#tar [选项] 压缩包 选项:
$ l. e1 K! H4 A6 u- -x:解打包;
- -f:指定压缩包的文件名;
- -v:显示打包文件过程;
- -t:测试,就是不解打包,只是査看包中有哪些文件;
- -C 目录:指定解打包位置;
- p9 D" v! j$ S# y" u# g- _
; u3 a! Q, I0 n# |其实解打包和打包相比,只是把打包选项"-cvf"更换为"-xvf"。我们来试试:
8 e1 ^/ G: u, z8 X[root@localhost ~]# tar -xvf anaconda-ks.cfg. tar
9 ]" K1 L* p; m Z/ z#解打包到当前目录下 如果使用"-xvf"选项,则会把包中的文件解压到当前目录下。如果想要指定解压位置,则需要使用"-C(大写)"选项。例如:
# b+ g0 A. {: D7 \( @1 b[root@localhost ~]# tar -xvf test.tar -C /tmp
_: i' A8 N( w. o, C& g#把文件包test.tar解打包到/tmp/目录下 如果只想査看文件包中有哪些文件,则可以把解打包选项"-x"更换为测试选项"-t"。例如:
' f0 w6 L/ C* l! j7 w[root@localhost ~]# tar -tvf test.tar
: e1 N7 W; g* C+ U. m# W. a4 Pdrwxr-xr-x root/root 0 2016-06-17 21:09 test/6 {! D7 c6 W5 A/ I$ _- s
-rw-r-r- root/root 0 2016-06-17 17:51 test/test3$ N/ t+ l0 V" A8 K, j
-rw-r-r- root/root 0 2016-06-17 17:51 test/test20 t3 X* U) d2 X* m! S, E
-rw-r-r- root/root 0 2016-06-17 17:51 test/test1" _3 b+ u+ d$ ]4 T9 e
#会用长格式显示test.tar文件包中文件的详细信息 ".tar.gz"和".tar.bz2" 格式你可能会觉得 Linux 实在太不智能了,一个打包压缩,居然还要先打包成".tar"格式,再压缩成".tar.gz"或".tar.bz2"格式。其实 tar 命令是可以同时打包压缩的,前面的讲解之所打包和压缩分开,是为了让大家了解在 Linux 中打包和压缩的不同。1 L# [) ?5 H& x
0 b& Y3 n2 M8 `* j$ j" e使用 tar 命令直接打包压缩。命令格式如下:
7 U& l8 r9 Y- f" L. t[root@localhost ~]#tar [选项] 压缩包 源文件或目录 选项:- -z:压缩和解压缩 ".tar.gz"格式
- -j:压缩和街压缩 ".tar.bz2"格式1 }3 V' o9 X4 W
4 a3 A3 U7 }+ O6 b% N1 z* m
【例 1】压缩与解压缩 ".tar.gz"格式。
f+ A# |: _9 C+ x我们先来看看如何压缩".tar.gz"格式:
( \( n. T8 X! p3 M, {[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
7 J5 p# b! N* T" m' Z2 w#把/temp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致 7 Q7 R/ s1 t+ a$ F
解压缩也只是在解打包选项"-xvf"前面加了一个"-z"选项。4 a1 P7 b+ Q3 H' L: D$ y6 V
[root@localhost ~]# tar -zxvf tmp.tar.gz
' N8 ` M0 h$ P0 r* k#解压缩与解打包".tar.gz"格式 前面讲的选项"-C"用于指定解压位置、"-t"用于査看压缩包内容,在这里同样适用。
, j1 X+ i J+ ?' m' l
0 y& o) e1 Z& y5 X9 ]& r【例 2】压缩与解压缩".tar.bz2"格式。
( r+ T- P$ n* [+ ~) T0 e和".tar.gz"格式唯一的不同就是"-zcvf"选项换成了 "-jcvf"。[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
% W" a& v+ t: q6 c- Q1 D#打包压缩为".tar.bz2"格式,注意压缩包文件名
* K# T. E" ^: `# |4 k0 d[root@localhost ~]# tar -jxvf tmp.tar.bz2$ N- G2 L4 u) D$ z3 ^3 P* W" R
#解压缩与解打包".tar.bz2"格式 把文件直接压缩成".tar.gz"和".tar.bz2"格式,才是 Linux 中最常用的压缩方式,这是大家一定要掌握的压缩和解压缩方法。 |