找回密码
 立即注册
搜索
查看: 371|回复: 0

Linux tar压缩命令:打包与解打包命令

[复制链接]
发表于 2022-6-22 10:00:38 | 显示全部楼层 |阅读模式
".tar"格式的打包和解打包都使用 tar 命令,区别只是选项不同。我们先看看 tar 命令的基本信息。
  • 命令名称:tar。
  • 英文原意:tar。
  • 所在路径:/bin/tar。
  • 执行权限:所有用户。
  • 功能描述:打包与解打包命令。
      P' j- L5 i3 u" W8 s
打包命令格式
[root@localhost ~]#tar [选项] [-f 压缩包名] 源文件或目录
选项:
  • -c:打包;
  • -f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
  • -v:显示打包文件过程;
    7 M9 R+ [) g' [6 K7 A

; T0 [) G, n% ~' l【例 1】基本使用。% B/ O3 E& l9 b( T- o. x& @
我们先打包一个文件练练手。: f! x8 ]) q' E4 n* g+ c+ ]3 S
[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
" o) O) P9 o) @# `! L) W0 a. F4 z" S#把anacondehks.cfg打包为 anacondehks.cfg.tar文件
选项"-cvf"一般是习惯用法,记住打包时需要指定打包之后的文件名,而且要用".tar"作为扩展名。那打包目录呢?我们也试试:
  S# D. W! D6 x/ O- y2 x9 i7 G2 L
[root@localhost ~]# ll -d test/
5 J7 e( W0 p. M6 Zdrwxr-xr-x 2 root root 4096 6月 17 21:09 test/
" f6 q  T3 D3 c#test是我们之前的测试目录
: W3 u' o3 `% C+ X1 }1 `; }[root@localhost ~]# tar -cvf test.tar test/) s3 ], l. ~6 b- R2 M
test/
. ~4 Z5 s$ Q' X3 ?" Otest/test3
( Z3 x% g- Y8 ^4 Atest/test2
" `  F  V8 b7 T( f. S9 r  g- ~( jtest/test1
9 c! u4 q+ z; `* ^+ ~# N0 ?#把目录打包为test.tar文件
' F9 N6 Y$ L$ V2 e6 q( X7 Star命令也可以打包多个文件或目录,只要用空格分开即可。例如:
% y$ v/ I; a9 w& S8 M[root@localhost ~]# tar -cvf ana.tar anaconda-ks.cfg /tmp/
% m. L5 w; s0 G" B& S! n) B4 u2 C#把anaconda-ks.cfg文件和/tmp目录打包成ana.tar文件包

) l9 A7 J/ g! q6 m- C1 w【例 2】打包压缩目录。
$ P' d- V2 i* l. P# h我们已经解释过了,压缩命令不能直接压缩目录,我们就先用 tar 命令把目录打成数据包,然后再用 gzip 命令或 bzip2 命令压缩。例如:2 Y) R! Y# ]3 Q  l; [( V8 Y
[root@localhost ~]#ll -d test test.tar6 M  U6 T$ m1 @
drwxr-xr-x 2 root root 4096 6月 17 21:09 test: V4 v' v' n( `' r+ e4 g
-rw-r--r-- 1 root root 10240 6月 18 01:06 test.tar. h) ^4 m# c) ?: k( U5 z" L
#我们之前已经把test目录打包成test.tar文件
" Y% x6 l6 F1 |5 D/ j% B5 Y[root@localhost ~]# gzip test.tar
  ^( m2 G: t# P7 L[root@localhost ~]# ll test.tar.gz
2 ?- U+ b" f3 L- R7 Y. R-rw-r--r-- 1 root root 176 6月 18 01:06 test.tar.gz9 ~8 r- B+ t% q9 W
#gzip命令会把test.tar压缩成test.tar.gz
$ \- q. V3 W9 C7 D' ~6 R[root@localhost ~]# gzip -d test.tar.gz7 v$ M  ?3 ?9 h
#解压缩,把test.tar.gz解压缩为test.tar- y- G5 p" P- l' s
[root@localhost ~]# bzip2 test.tar
( h  M3 o0 l- z8 N3 X* N5 c[root@localhost ~]# ll test.tar.bz2& }. a; X" P6 ]2 u6 I
-rw-r--r-- 1 root root 164 6月 18 01:06 test.tar.bz2
6 o. o- `! F4 B2 R" \% V9 T#bzip2命令会把test.tar压缩为 test.tar.bz2格式
解打包命令格式".tar"格式的解打包也需要使用 tar 命令,但是选项不太一样。命令格式如下:
7 A0 w" f8 {- X: Z6 Y
[root@localhost ~]#tar [选项] 压缩包
选项:/ C+ O* E7 L5 Q8 U: q
  • -x:解打包;
  • -f:指定压缩包的文件名;
  • -v:显示打包文件过程;
  • -t:测试,就是不解打包,只是査看包中有哪些文件;
  • -C 目录:指定解打包位置;& K& ?0 h& {2 z: h
. D- X6 `8 t2 L$ {; V1 @6 X* J! E
其实解打包和打包相比,只是把打包选项"-cvf"更换为"-xvf"。我们来试试:
7 ~* s/ Y6 M% r6 e$ x, _( i
[root@localhost ~]# tar -xvf anaconda-ks.cfg. tar: N3 }2 }) G/ E
#解打包到当前目录下
如果使用"-xvf"选项,则会把包中的文件解压到当前目录下。如果想要指定解压位置,则需要使用"-C(大写)"选项。例如:+ L) ^/ g" \4 u$ y
[root@localhost ~]# tar -xvf test.tar -C /tmp6 A" ?, i- g$ w' O9 S
#把文件包test.tar解打包到/tmp/目录下
如果只想査看文件包中有哪些文件,则可以把解打包选项"-x"更换为测试选项"-t"。例如:" ~9 X2 U- B# Y/ ]7 t3 N+ b4 w
[root@localhost ~]# tar -tvf test.tar/ V) c! k, b! B- k( P
drwxr-xr-x root/root 0 2016-06-17 21:09 test/4 ]+ k2 Q) W- d! @" m) P7 B+ {
-rw-r-r- root/root 0 2016-06-17 17:51 test/test38 p" b- H0 l5 l* w
-rw-r-r- root/root 0 2016-06-17 17:51 test/test2( Z4 D* V) \6 V( y! ^- j0 B6 ?
-rw-r-r- root/root 0 2016-06-17 17:51 test/test1
' j* L* K  p0 S0 U/ s  ~& D#会用长格式显示test.tar文件包中文件的详细信息
".tar.gz"和".tar.bz2" 格式你可能会觉得 Linux 实在太不智能了,一个打包压缩,居然还要先打包成".tar"格式,再压缩成".tar.gz"或".tar.bz2"格式。其实 tar 命令是可以同时打包压缩的,前面的讲解之所打包和压缩分开,是为了让大家了解在 Linux 中打包和压缩的不同。* Z+ F% t2 a2 |! X. ]

! `/ M1 x9 P+ A3 g, e2 P, _使用 tar 命令直接打包压缩。命令格式如下:6 j. {% E4 i2 r
[root@localhost ~]#tar [选项] 压缩包 源文件或目录
选项:
  • -z:压缩和解压缩 ".tar.gz"格式
  • -j:压缩和街压缩 ".tar.bz2"格式- f, O% ?& R7 k6 K- f" `

4 P! \' U& Y* r【例 1】压缩与解压缩 ".tar.gz"格式。
" s$ S) F9 L) x7 K5 M+ W我们先来看看如何压缩".tar.gz"格式:5 R' U6 H$ s* j! B+ w
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
# P4 ~( m9 r$ r0 w9 Z+ L& E#把/temp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致
- I$ K5 l, [3 i1 N, \: N
解压缩也只是在解打包选项"-xvf"前面加了一个"-z"选项。
% w6 W5 z! K7 K6 b' x: ~4 y. x
[root@localhost ~]# tar -zxvf tmp.tar.gz# `& @  R% O$ u% _* k. p4 O$ T
#解压缩与解打包".tar.gz"格式
前面讲的选项"-C"用于指定解压位置、"-t"用于査看压缩包内容,在这里同样适用。! x& @6 f% W  K

% l5 K# i6 R1 i, O; Z2 D( o【例 2】压缩与解压缩".tar.bz2"格式。
5 T) o$ q' A; }# u和".tar.gz"格式唯一的不同就是"-zcvf"选项换成了 "-jcvf"。
[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
9 m" l3 j2 [% u9 o, B- P#打包压缩为".tar.bz2"格式,注意压缩包文件名8 z% U0 b: k' p6 Q7 E0 O7 y# x
[root@localhost ~]# tar -jxvf tmp.tar.bz2) Q6 H  M0 ]4 l% F) t1 I
#解压缩与解打包".tar.bz2"格式
把文件直接压缩成".tar.gz"和".tar.bz2"格式,才是 Linux 中最常用的压缩方式,这是大家一定要掌握的压缩和解压缩方法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-2 10:52 PM , Processed in 0.087795 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表