|
|
Linux 各種壓縮與解壓縮指令:
" z/ g2 \7 ?/ l- o0 h" Z.tar' x6 G% n0 N# n {7 d+ Z# f6 k& y
.gz! z/ u! g) ~+ f1 K
.tar.gz 8 M5 l+ H |: n0 }4 v( w
更新tar.gz壓縮檔內某一個檔案或某目錄內幾個檔案: 例如/ g2 S$ H" o, S$ y: {) a @
參考: https://askubuntu.com/questions/ ... pdate-a-tar-gz-file
6 E8 s3 L! r5 x9 c8 s# W' V- r 1.)先將.tar.gz解壓為.tar( e0 ?2 H* h) I1 Y' J' o
gunzip filename.tar.gz+ a" p/ `% ^8 c( j' g% ]2 f
2.)更新.tar* X6 M: i7 S4 n' J* W) E' O
tar -uvf filename.tar new_file 或. J; }2 x% F. E, d
tar -uvf filename.tar subdir/*
3 h" z9 P" ^$ t7 A' }& W! p9 F 3.)壓縮已更新檔.tar0 [6 O" B1 y/ g1 e3 |; `
gzip filename.tar
- f9 t9 u0 Q8 `$ D7 p
$ G3 i7 U. l3 r' |4 N, j- |排除不想壓縮的目錄或檔案: 例如) S5 C5 Y# d2 P
要備份的目錄是 aaa' i' a: p2 _) M4 k/ t" Q0 x: t& J
不想要備份的是 aaa 裡面的 bbb 子目錄 1 ?& N0 R+ S& L2 w
tar zpcvf aaa_backup.tar.gz --exclude=./aaa/bbb ./aaa9 y8 U/ z. e3 M t2 d8 {
, W- K9 |4 C* c. ?! }
壓縮不包含路徑資訊(絕對路徑): 例如
; T+ [* E$ T6 i& i6 H% z 我要壓縮 /home/user1/tmp/* ,(有 a.txt ,b.txt)不管目前工作目錄在哪,都可以去掉目錄資訊,例如 目前工作目錄在 /) a3 x# p1 C3 j
# tar -zcvf tmp.tar.gz -C /home/user1 tmp (tmp前有一個空格)不保留" /home/user1"路徑9 [+ C8 K* j$ |5 W6 X
# tar -ztvf tmp.tar.gz
* ]0 f# u8 a5 P# S- k+ D( b drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp/
: S* T5 m; N" f& u -rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt+ a/ S5 x z; K$ b# L# P: v7 _4 X
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt
5 Z6 s. }% _6 Q& ?, E4 r% b # tar -zcvf tmp.tar.gz -C /home/user1/tmp . (tmp後有一個空格再一點)不保留" /home/user1/tmp"路徑
( `6 P; v% o- Y9 F/ u' f # tar -ztvf tmp.tar.gz , d' H0 Y. \. ^! Z- o
drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./
4 t8 x0 n' P3 h: v7 U -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt
1 j( j, ?1 n5 t+ a! M- y" P u -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt. c" m8 v2 V/ l, J8 j# M
目前工作目錄在 /home/user1: n' d1 p% Y! Q: x0 ]# K4 t/ N$ f7 ?1 F
# tar -zcvf tmp.tar.gz tmp+ o% z3 r8 _, \4 A
# tar -ztvf tmp.tar.gz
- t t: k" m b8 D drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp/* T- {# J R1 b4 Q
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt
# Q* N3 x* Z. ?, y) E, X% n -rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt. D1 x; V) A% Q4 \; J" F2 g, {6 `% W
# tar -zcvf tmp.tar.gz -C tmp . (有一點喔)不保留" tmp"路徑5 p9 {+ k) |4 O! ~0 h! l
# tar -ztvf tmp.tar.gz
$ L Z \. U5 g" X( i drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./
) t. Z+ g4 |: e5 M0 F3 i' u: @ -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt9 h9 ?% N9 a0 T7 y6 I1 X
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt
' t9 v9 ]. y8 S* a' r Z% U' e" j( ^ ]: _
解壓縮到指定的目錄 例如 解壓/home/user1/tmp.tar.gz 到 /home/user1/tmp 工作目錄在/home/user13 S: F4 H4 C. y" v* T
# tar -C tmp -zxvf tmp.tar.gz 可以使用相對路徑, -C(大寫)一定要接在tar後面,其他位置都不行1 Q- c# s5 g" k6 g$ ~$ e
# tar -C /home/user1/tmp -zxvf tmp.tar.gz 可以使用絕對路徑, x5 j; c0 i7 l: _! N4 Z% p' _' ?5 _
如果工作目錄在/home 以外的位置就要使用絕對路徑& ?! m) s# R6 D3 M a" j1 U+ @
.bz. \5 m' c: r: m' `
.tar.bz
9 C4 u! p8 e" g, H3 B* F.bz2; Z1 }/ U, L9 K% c
.tar.bz2 O; e- r: u$ n& `
.xz
# F8 J( v$ E$ x5 W& y.tar.xz i: V6 H+ e) J
.Z' p" l0 Z" [9 b/ E3 {5 I
.tar.Z p) v! U+ \3 v0 t ?
.tgz) F5 R" {2 A/ N# x9 t
.tar.tgz( ]2 o+ v6 b5 z. N
.7z
7 [# n- H+ S+ g9 P6 z.zip
4 J1 g9 ]1 C3 w# r3 Q3 K.rar
+ [& t: }0 y4 h.lha
2 y3 L( {" u+ \6 l! r: g' E1 k+ {; _! |( G# i5 r! V) b$ H+ m8 H
split : 大檔分割成小檔例如:- m: }. V. }, Q b6 V4 k$ ?) X# O6 G
把一個500MB的檔案(file.tar.gz),分割成每個檔50M的小檔案可以用以下指令
7 a0 ~6 U( Z0 j: isplit -b 50m file.tar.gz (m 可以改成G(giga))6 R1 z+ H3 m6 |- p; i- g
若要合併 可以用cat 指令把那些小檔案合併成一個大檔案 例如:
b+ n: |9 L2 x5 U' _* ?cat xaa xab xac xad xae xaf > file.tar.gz
5 y* e* q. O+ u/ ^% X0 v/ C
# z5 W3 x7 G; K' i8 Y
. M/ c% [1 r5 d0 A- m: v( A參考自 : - m2 F' |; y: Q, H6 d- L
http://note.drx.tw/2008/04/command.html) g6 W: S" O D @7 l) F" V
* j4 n( ^5 K8 r8 K# f& | M |
|
|