|
Linux 各種壓縮與解壓縮指令:, r8 u0 s6 B$ R4 f t, u+ d; D! _
.tar
/ s# O* _% W9 C' h2 Q8 [# L.gz; K6 R4 |: [% D; p
.tar.gz 1 R( `" v! e- T B5 O
更新tar.gz壓縮檔內某一個檔案或某目錄內幾個檔案: 例如
* q+ m8 Y$ v2 J: H2 @" I1 h+ t參考: https://askubuntu.com/questions/ ... pdate-a-tar-gz-file5 Z8 \5 u# W! g" B+ p
1.)先將.tar.gz解壓為.tar* ^" z! a8 M2 t2 i$ g9 }
gunzip filename.tar.gz# R3 ]# J0 t0 [- w
2.)更新.tar; o! C( j1 J+ U- @( m) i4 n0 l; b
tar -uvf filename.tar new_file 或
6 `+ [9 D7 n4 y tar -uvf filename.tar subdir/*1 M, }; n t, _0 I" _, }* `1 q
3.)壓縮已更新檔.tar( N+ ~: g1 O" A
gzip filename.tar0 H( ?8 T/ e2 p- S5 V. V
6 h0 L6 u4 {. p2 _$ _排除不想壓縮的目錄或檔案: 例如! q+ |6 C% ^# [+ ?9 T
要備份的目錄是 aaa4 s a; V- J1 T8 W' Q
不想要備份的是 aaa 裡面的 bbb 子目錄
4 l5 H1 Y( i5 o( L; [% | tar zpcvf aaa_backup.tar.gz --exclude=./aaa/bbb ./aaa
% l9 U1 R2 B j: o- u/ Z& E% E* H, e0 [# M( P4 S. c; c o1 a
壓縮不包含路徑資訊(絕對路徑): 例如
! O- v t8 i$ G) H7 J4 F 我要壓縮 /home/user1/tmp/* ,(有 a.txt ,b.txt)不管目前工作目錄在哪,都可以去掉目錄資訊,例如 目前工作目錄在 /
" l3 f% {8 h& o8 \0 u6 |! r# f # tar -zcvf tmp.tar.gz -C /home/user1 tmp (tmp前有一個空格)不保留" /home/user1"路徑
0 q2 F! c" s3 p8 ?( B8 P # tar -ztvf tmp.tar.gz
' U$ ]0 T' s* Z6 F4 o drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp/
+ Q" x0 Y* R: X! w0 X( a5 s0 n- o -rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt5 T0 r9 a( D1 ]: D
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt g2 @9 l" n) i7 v- \
# tar -zcvf tmp.tar.gz -C /home/user1/tmp . (tmp後有一個空格再一點)不保留" /home/user1/tmp"路徑
) V r/ _, L/ }4 p # tar -ztvf tmp.tar.gz 0 A$ V: S7 X% [% D4 Y8 F k
drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./
) @2 A6 g- G$ w, t -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt! h# _2 s/ D9 Q# z. B0 @2 d
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt
4 d* c# ~2 Q2 h; Z5 D6 X# ~ 目前工作目錄在 /home/user1
2 X2 K. K5 G0 {3 G d" v # tar -zcvf tmp.tar.gz tmp
& F& ]5 z& {* T+ M # tar -ztvf tmp.tar.gz5 J. B, n: X; \3 Y; z- @
drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp/
. H8 i1 x( o& G5 i -rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt: A- R5 K7 _ v5 w' N% H. }1 K
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt' k" g, N( k4 ^4 S* l
# tar -zcvf tmp.tar.gz -C tmp . (有一點喔)不保留" tmp"路徑
) o( x; b! K! ?2 o # tar -ztvf tmp.tar.gz
! e5 C$ l$ r" B7 D' M drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./3 Y* j* ]5 j) ?' A3 l9 t2 Z
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt. Z% L, ^. e1 k& ]" `
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt
- O% |! y1 K+ S0 s X" Q+ n- O5 s; U# g6 q# F8 j
解壓縮到指定的目錄 例如 解壓/home/user1/tmp.tar.gz 到 /home/user1/tmp 工作目錄在/home/user1) }( E. q- L& T/ I
# tar -C tmp -zxvf tmp.tar.gz 可以使用相對路徑, -C(大寫)一定要接在tar後面,其他位置都不行
M- j' ?' U/ R2 J6 J6 m3 N # tar -C /home/user1/tmp -zxvf tmp.tar.gz 可以使用絕對路徑2 A8 \5 r. ~, @" Q$ t/ R
如果工作目錄在/home 以外的位置就要使用絕對路徑
& X! [8 B+ j; }2 Y0 p! a& e.bz9 e; x& ^# j E k
.tar.bz
4 ? G* k1 r8 ~. q: @.bz24 c' |+ G* {; l8 }
.tar.bz21 B4 b4 A1 m5 E5 \! m$ k3 b! q* m! g
.xz% k, ]: x1 u a3 E& u2 j
.tar.xz
+ }# T% b1 q6 W% a.Z( G* T/ c- R2 G- A7 ?
.tar.Z+ J3 c. x* j* v6 v
.tgz
5 r y- J8 {; I5 X" W: C.tar.tgz
/ E4 Y5 D/ {" Z1 F1 E2 @7 R.7z' s/ R+ q$ N+ c* G
.zip
$ W) Q: ]0 K" l; I- l, ~$ x.rar
& G+ {3 n! H9 L" h3 ]! V4 i+ k.lha, F7 D/ q5 k8 |, k
# K( V5 I, Y ^3 }& Lsplit : 大檔分割成小檔例如:* _+ U- h; T9 S4 O
把一個500MB的檔案(file.tar.gz),分割成每個檔50M的小檔案可以用以下指令
( H3 Q' d4 Y c( w: S# L) Q9 Asplit -b 50m file.tar.gz (m 可以改成G(giga))! N( l! q3 o, q. f+ ]; L
若要合併 可以用cat 指令把那些小檔案合併成一個大檔案 例如:4 n- p( \: m/ a8 {8 [) A( }
cat xaa xab xac xad xae xaf > file.tar.gz
8 A8 U7 Z& Z- n5 Q* C6 Y z! t2 l& ?, r3 O6 k
/ H' }2 x3 ?4 i7 I d, |8 a參考自 : , U2 q) Y- b8 d5 P$ ^
http://note.drx.tw/2008/04/command.html( W8 W! \" S' B+ ^* q. w2 D2 f5 B
* G8 z7 p# c" x8 L2 C
|
|
|