".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。- 命令名称:tar。
- 英文原意:tar。
- 所在路径:/bin/tar。
- 执行权限:所有用户。
- 功能描述:打包与解打包命令。
& c- J) h9 R+ q9 p) D 打包命令格式[root@localhost ~]#tar [选项] [-f 压缩包名] 源文件或目录 选项:- -c:打包;
- -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
- -v:显示打包文件过程;6 k, w! p m" _$ p, p- x
- x j0 R' C: Y
【例 1】基本使用。
+ T Q% u% q9 g1 s- q2 z- Q我们先打包一个文件练练手。
- Y U# ^3 Y* W% D; x/ _; l+ U[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
( M; s5 m: n( k4 Y. A4 K#把anacondehks.cfg打包为 anacondehks.cfg.tar文件 选项"-cvf"一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用".tar"作为扩展名。那打包目录呢?我们也试试:( T& I7 j/ z' L0 s
[root@localhost ~]# ll -d test/; \% ^8 R& [+ Z" T4 m
drwxr-xr-x 2 root root 4096 6月 17 21:09 test/
' Y% b, @- M; k5 T8 _8 D' N# d#test是我们之前的测试目录
) K6 `, e/ Z7 Q, ?[root@localhost ~]# tar -cvf test.tar test/
3 X; E' X0 g4 Ttest/
5 \/ U2 [6 c# ?test/test3
: i% X7 |/ n" @test/test23 E9 f. X+ @5 a. t9 m5 `9 C2 I
test/test1
V* {5 J2 Q, ^, u& y ]9 T. B#把目录打包为test.tar文件
8 v. P* q8 }& s2 n( S, Mtar命令也可以打包多个文件或目录,只要用空格分开即可。例如:
( Q2 T ]' @4 S* |% L+ {. h[root@localhost ~]# tar -cvf ana.tar anaconda-ks.cfg /tmp/
. @6 A/ q4 x( v2 R1 \* `#把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包
% n% K- B# h# _# |【例 2】打包压缩目录。' q# u5 p. L3 G* q4 [3 w
我们已经解释过了,压缩命令不能直接压缩目录,我们就先用 tar 命令把目录打成数据包,然后再用 gzip 命令或 bzip2 命令压缩。例如:7 g+ i$ @0 m4 V: T0 W& G5 A
[root@localhost ~]#ll -d test test.tar. U `6 X+ ~0 e" g3 N* B
drwxr-xr-x 2 root root 4096 6月 17 21:09 test* O! C$ C7 g8 u G
-rw-r--r-- 1 root root 10240 6月 18 01:06 test.tar
: R1 M4 X! Q! S: |" U& n#我们之前已经把test目录打包成test.tar文件
; W0 Z. @$ |: \[root@localhost ~]# gzip test.tar5 P8 }1 X) f' a# H; T; i
[root@localhost ~]# ll test.tar.gz
" A& H, G4 j7 F9 P0 p' A-rw-r--r-- 1 root root 176 6月 18 01:06 test.tar.gz. O: \+ A8 f( @1 P, U
#gzip命令会把test.tar压缩成test.tar.gz
, Y2 m, Q" G; Y2 y W; M8 C9 c[root@localhost ~]# gzip -d test.tar.gz% b* n6 d% R; W1 K4 d3 ~" r) A
#解压缩,把test.tar.gz解压缩为test.tar
2 I( ]0 A$ c2 G5 z[root@localhost ~]# bzip2 test.tar
( `' D" L5 _4 _/ v. D7 o$ p. |& P6 w[root@localhost ~]# ll test.tar.bz2' Q9 ]% o9 O' w( r
-rw-r--r-- 1 root root 164 6月 18 01:06 test.tar.bz21 a" S/ y' W* h7 x
#bzip2命令会把test.tar压缩为 test.tar.bz2格式 解打包命令格式".tar"格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:
& u6 z* ]5 m. z% u/ W. B/ j[root@localhost ~]#tar [选项] 压缩包 选项:: t5 x: O+ x* [3 Q
- -x:解打包;
- -f:指定压缩包的文件名;
- -v:显示打包文件过程;
- -t:测试,就是不解打包,只是査看包中有哪些文件;
- -C 目录:指定解打包位置;
! A& F0 X* l; _$ `: X
& u5 G1 q5 W R0 f+ z s其实解打包和打包相比,只是把打包选项"-cvf"更换为"-xvf"。我们来试试:
& q, b' ~/ E2 K \& e2 n[root@localhost ~]# tar -xvf anaconda-ks.cfg. tar
9 g- O. w' |8 h* t$ {6 S! G#解打包到当前目录下 如果使用"-xvf"选项,则会把包中的文件解压到当前目录下。如果想要指定解压位置,则需要使用"-C(大写)"选项。例如:
" b' H9 Q7 K$ I$ u9 Q[root@localhost ~]# tar -xvf test.tar -C /tmp
4 b. Y! f' m3 R* V9 m#把文件包test.tar解打包到/tmp/目录下 如果只想査看文件包中有哪些文件,则可以把解打包选项"-x"更换为测试选项"-t"。例如:) O1 f- G/ ~+ C
[root@localhost ~]# tar -tvf test.tar
4 F. _0 z1 b# F# y- n* [$ jdrwxr-xr-x root/root 0 2016-06-17 21:09 test/
. Z2 l: Q. R/ i' j' [, }6 ?1 T-rw-r-r- root/root 0 2016-06-17 17:51 test/test3
- o2 Z9 _7 n/ w1 ^0 u. L-rw-r-r- root/root 0 2016-06-17 17:51 test/test2
4 }) V* q& z# f" U% i5 d-rw-r-r- root/root 0 2016-06-17 17:51 test/test1( Z. C% b P' J+ x! h* y
#会用长格式显示test.tar文件包中文件的详细信息 ".tar.gz"和".tar.bz2" 格式你可能会觉得 Linux 实在太不智能了,一个打包压缩,居然还要先打包成".tar"格式,再压缩成".tar.gz"或".tar.bz2"格式。其实 tar 命令是可以同时打包压缩的,前面的讲解之所打包和压缩分开,是为了让大家了解在 Linux 中打包和压缩的不同。8 p: \, T X/ `
4 J+ b1 n' }9 ]; b5 v7 R8 \
使用 tar 命令直接打包压缩。命令格式如下:
/ O3 k* }# R" ]( w Q0 E- b[root@localhost ~]#tar [选项] 压缩包 源文件或目录 选项:- -z:压缩和解压缩 ".tar.gz"格式
- -j:压缩和街压缩 ".tar.bz2"格式
, ]% d9 K& H& W
! O. W; G8 Q& F" ~5 ]: R2 z& X【例 1】压缩与解压缩 ".tar.gz"格式。
3 H! w# d7 L9 V9 n0 U我们先来看看如何压缩".tar.gz"格式:$ V4 J" n0 u( Q: B. T
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/" _8 e$ T; I5 h5 R+ U9 P! N( u5 q
#把/temp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致
4 ^1 G- f5 B9 M! s6 }' n& k$ H解压缩也只是在解打包选项"-xvf"前面加了一个"-z"选项。1 G& C% a, K7 h
[root@localhost ~]# tar -zxvf tmp.tar.gz
1 s# Z, u; V+ p8 W9 Z4 L" N% ~#解压缩与解打包".tar.gz"格式 前面讲的选项"-C"用于指定解压位置、"-t"用于査看压缩包内容,在这里同样适用。
# R, s j# H( B0 G
1 w' A" g& Q1 X【例 2】压缩与解压缩".tar.bz2"格式。9 i U) a R( [/ V0 O9 J: e/ X
和".tar.gz"格式唯一的不同就是"-zcvf"选项换成了 "-jcvf"。[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/! F. ^: N' x4 P$ I( G& w
#打包压缩为".tar.bz2"格式,注意压缩包文件名
+ g, l6 R& F: {- _& e. r, P[root@localhost ~]# tar -jxvf tmp.tar.bz25 J" w9 c9 a8 n
#解压缩与解打包".tar.bz2"格式 把文件直接压缩成".tar.gz"和".tar.bz2"格式,才是 Linux 中最常用的压缩方式,这是大家一定要掌握的压缩和解压缩方法。 |