".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。- 命令名称:tar。
- 英文原意:tar。
- 所在路径:/bin/tar。
- 执行权限:所有用户。
- 功能描述:打包与解打包命令。- Q5 W( x5 Z0 _ k/ R0 T
打包命令格式[root@localhost ~]#tar [选项] [-f 压缩包名] 源文件或目录 选项:- -c:打包;
- -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
- -v:显示打包文件过程;' p8 |% e8 v4 Z Z/ N" R# e7 p. G
5 }+ e# F; X& b3 F1 A【例 1】基本使用。
( o' T: s, A& q. N% N1 ]7 t我们先打包一个文件练练手。
: X" x7 n6 `$ o; ~2 M$ J[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg* L. x: H' k. U* n' G8 E' I$ S
#把anacondehks.cfg打包为 anacondehks.cfg.tar文件 选项"-cvf"一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用".tar"作为扩展名。那打包目录呢?我们也试试:! v Q. {$ C0 n6 e" i7 p
[root@localhost ~]# ll -d test/
- q. M0 o/ M ~drwxr-xr-x 2 root root 4096 6月 17 21:09 test/' c" m q% ^: ~% w7 c4 K% {( }
#test是我们之前的测试目录
. F. S- r% I3 j0 l8 H' ^[root@localhost ~]# tar -cvf test.tar test/
9 ^, i, t0 J1 f5 ?8 ]test/
' M4 v( s6 p* xtest/test30 I7 Q: V, F: I+ @# v Z, p
test/test2
. Z: I$ \ m+ P) J* t5 o! P9 Ftest/test1
2 h2 }" ?& M( p) h5 L. J#把目录打包为test.tar文件3 N' Y+ c5 T4 r6 \3 x7 i; s( r7 J
tar命令也可以打包多个文件或目录,只要用空格分开即可。例如:5 K9 ~* I$ S. P t' [( }7 s5 G3 u/ S
[root@localhost ~]# tar -cvf ana.tar anaconda-ks.cfg /tmp/
( l6 X7 }5 ~4 S#把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包 ( c$ O1 @# `6 H0 e8 t; z' f
【例 2】打包压缩目录。1 ~& a6 g* N; J5 y% m0 T
我们已经解释过了,压缩命令不能直接压缩目录,我们就先用 tar 命令把目录打成数据包,然后再用 gzip 命令或 bzip2 命令压缩。例如:1 q0 V1 ] u$ d$ P* z/ F) b
[root@localhost ~]#ll -d test test.tar
% r+ v9 X' B7 b6 A4 Sdrwxr-xr-x 2 root root 4096 6月 17 21:09 test
1 B* u. @9 b! y1 v! E-rw-r--r-- 1 root root 10240 6月 18 01:06 test.tar
; C; t& L; z) w& b3 K. R4 Q2 r#我们之前已经把test目录打包成test.tar文件
' `. h, l( `6 S z2 C1 @[root@localhost ~]# gzip test.tar
6 J! o- H5 O% h3 J[root@localhost ~]# ll test.tar.gz
3 m4 N# I! M4 V* Q3 k1 e) m( y& v( ~: b-rw-r--r-- 1 root root 176 6月 18 01:06 test.tar.gz! y) S6 p; S% g, K1 v1 \- r! e3 I v8 A
#gzip命令会把test.tar压缩成test.tar.gz
( n( r9 e1 O# S `0 \$ Y" ]& }[root@localhost ~]# gzip -d test.tar.gz$ u6 j0 J: B! x _$ s
#解压缩,把test.tar.gz解压缩为test.tar
( |0 V9 M. Q6 r+ Y[root@localhost ~]# bzip2 test.tar
/ G# _0 S7 D" `' h* P8 J[root@localhost ~]# ll test.tar.bz2' [9 a8 Z# R4 p# |
-rw-r--r-- 1 root root 164 6月 18 01:06 test.tar.bz2# I2 l I; W1 b8 Q. _6 Q
#bzip2命令会把test.tar压缩为 test.tar.bz2格式 解打包命令格式".tar"格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:
( S( P7 Y$ T q r: q0 b# I; T' ~( B[root@localhost ~]#tar [选项] 压缩包 选项:. t# C# b# g/ L% b
- -x:解打包;
- -f:指定压缩包的文件名;
- -v:显示打包文件过程;
- -t:测试,就是不解打包,只是査看包中有哪些文件;
- -C 目录:指定解打包位置;
" p9 s6 f8 z/ t, k0 } ; z) ~: o# f; I) E& b) g# v
其实解打包和打包相比,只是把打包选项"-cvf"更换为"-xvf"。我们来试试:2 w! w) L+ q7 E5 b" Y
[root@localhost ~]# tar -xvf anaconda-ks.cfg. tar
0 _( O: v2 d; h: m8 O5 I#解打包到当前目录下 如果使用"-xvf"选项,则会把包中的文件解压到当前目录下。如果想要指定解压位置,则需要使用"-C(大写)"选项。例如:& [9 q, L0 E: h6 |) C
[root@localhost ~]# tar -xvf test.tar -C /tmp
5 A4 T0 r9 g- y9 t#把文件包test.tar解打包到/tmp/目录下 如果只想査看文件包中有哪些文件,则可以把解打包选项"-x"更换为测试选项"-t"。例如:
% N# X( F1 A2 K' a[root@localhost ~]# tar -tvf test.tar8 w" M/ R4 |) d3 A1 i( C
drwxr-xr-x root/root 0 2016-06-17 21:09 test/
) R& ]5 [5 ^% d- F: ?-rw-r-r- root/root 0 2016-06-17 17:51 test/test3* ~( I7 r5 W+ p+ N' U* f1 A
-rw-r-r- root/root 0 2016-06-17 17:51 test/test2
4 j; c& g! b/ H/ E0 B-rw-r-r- root/root 0 2016-06-17 17:51 test/test1
! ]$ o' z& F! D$ C9 _. T#会用长格式显示test.tar文件包中文件的详细信息 ".tar.gz"和".tar.bz2" 格式你可能会觉得 Linux 实在太不智能了,一个打包压缩,居然还要先打包成".tar"格式,再压缩成".tar.gz"或".tar.bz2"格式。其实 tar 命令是可以同时打包压缩的,前面的讲解之所打包和压缩分开,是为了让大家了解在 Linux 中打包和压缩的不同。, h" o2 I7 N4 Y% V
% V, E2 q+ K3 s3 J+ x" {" U8 f
使用 tar 命令直接打包压缩。命令格式如下:
+ }6 Y" x% F- A' ~( t. t0 C[root@localhost ~]#tar [选项] 压缩包 源文件或目录 选项:- -z:压缩和解压缩 ".tar.gz"格式
- -j:压缩和街压缩 ".tar.bz2"格式
. R, |1 ]9 }* |' J: d4 ]
/ B/ Y3 n1 S5 v% e0 j/ a【例 1】压缩与解压缩 ".tar.gz"格式。
$ N: P( j& w/ B1 o我们先来看看如何压缩".tar.gz"格式:
- Y. g# ?$ J8 `' P: h. G[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
# L$ C3 a) t5 X$ I8 {/ g: S, a#把/temp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致
) ]4 C+ [( f& q解压缩也只是在解打包选项"-xvf"前面加了一个"-z"选项。
( E1 G7 U) K9 f9 u9 @[root@localhost ~]# tar -zxvf tmp.tar.gz9 y$ q# q+ j6 J3 e u' }: o. |
#解压缩与解打包".tar.gz"格式 前面讲的选项"-C"用于指定解压位置、"-t"用于査看压缩包内容,在这里同样适用。
* R( p! [+ H/ l. ^$ ^9 o1 p$ L, `" `6 Y7 \/ ~% W8 `
【例 2】压缩与解压缩".tar.bz2"格式。
- k; R3 J) f6 W7 k; ]3 p和".tar.gz"格式唯一的不同就是"-zcvf"选项换成了 "-jcvf"。[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
+ V, Q% Q# B/ H#打包压缩为".tar.bz2"格式,注意压缩包文件名6 O6 j7 ?- J9 g# E
[root@localhost ~]# tar -jxvf tmp.tar.bz2
( _2 [# ?& @, H! U' j* K#解压缩与解打包".tar.bz2"格式 把文件直接压缩成".tar.gz"和".tar.bz2"格式,才是 Linux 中最常用的压缩方式,这是大家一定要掌握的压缩和解压缩方法。 |