|
|
Linux 各種壓縮與解壓縮指令:
3 J- O7 r6 D" H# S; ~; ^.tar
' H |3 o, J4 _0 ]: w3 D5 T.gz1 @9 x& x; ?( r- ]2 q
.tar.gz % d% f& `- x6 o. U; c' c8 A
更新tar.gz壓縮檔內某一個檔案或某目錄內幾個檔案: 例如* u# D; g6 V# y: Q
參考: https://askubuntu.com/questions/ ... pdate-a-tar-gz-file
. \$ t9 U) p2 A) a+ A: J 1.)先將.tar.gz解壓為.tar6 m3 `& q$ Z$ K" t6 B
gunzip filename.tar.gz) u; ~" i6 y! S5 ?: i9 q# B2 p
2.)更新.tar
- c0 L; }0 u( R; \( u: {4 s tar -uvf filename.tar new_file 或
* r/ x3 c, x5 t tar -uvf filename.tar subdir/*
. C9 _( P4 p( U" a+ Y 3.)壓縮已更新檔.tar
- ~5 j" _1 K* x$ Y gzip filename.tar7 h2 `% r3 p+ Q3 z& t0 ~0 X* [( ]
. O8 ]0 c" g9 n. O9 v6 ?
排除不想壓縮的目錄或檔案: 例如$ J: x$ p8 f" I! V! d
要備份的目錄是 aaa
$ {2 r5 K: t% U' C 不想要備份的是 aaa 裡面的 bbb 子目錄
r7 n x9 b3 g+ a$ z- I tar zpcvf aaa_backup.tar.gz --exclude=./aaa/bbb ./aaa
/ X, f3 ?1 r7 @" D" ], W, Q$ ?. c& d
壓縮不包含路徑資訊(絕對路徑): 例如
' u. `$ O6 A" B' @+ P' G 我要壓縮 /home/user1/tmp/* ,(有 a.txt ,b.txt)不管目前工作目錄在哪,都可以去掉目錄資訊,例如 目前工作目錄在 /) d2 `1 [! Q$ E) o& m+ Y% ~9 C
# tar -zcvf tmp.tar.gz -C /home/user1 tmp (tmp前有一個空格)不保留" /home/user1"路徑( }2 [+ ^ M; x* ^ G9 d9 \3 Z
# tar -ztvf tmp.tar.gz
; i# E- [# R; W# t( g; w drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp// ~' Q- {+ d* h" ~ K
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt
. i' F$ R$ h* |6 Y0 c. N) x, y -rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt& d9 I; P9 Z5 G+ I, V
# tar -zcvf tmp.tar.gz -C /home/user1/tmp . (tmp後有一個空格再一點)不保留" /home/user1/tmp"路徑% x* \0 x# [! a
# tar -ztvf tmp.tar.gz
2 T* C3 U- v! V0 K- h- P- Z drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./: J2 ~! X* S( ~: a& w3 r" d- g
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt
0 L" ~7 E3 u, J& I' y; \ -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt
* z' N3 H% ~0 k- _$ g+ X8 I' T 目前工作目錄在 /home/user1
# b. f/ ~2 a+ P # tar -zcvf tmp.tar.gz tmp5 }% s9 j6 [6 X' g# D% a
# tar -ztvf tmp.tar.gz
6 H( O5 S; h( d9 x. S- O' ] drwxrwxr-x user1/user1 0 2018-04-07 12:10 tmp/# _6 H: h, k7 ~
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/a.txt5 F5 p6 j E# f: }" j6 O1 h/ s( G2 C
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 tmp/b.txt- l/ D1 t2 B! h) _
# tar -zcvf tmp.tar.gz -C tmp . (有一點喔)不保留" tmp"路徑
( b9 }7 f& V% F3 k+ Z # tar -ztvf tmp.tar.gz+ ?+ L ^. @' O' x
drwxrwxr-x user1/user1 0 2018-04-07 12:10 ./
# {2 z+ {8 d7 k$ U: o -rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./a.txt- v; ~, s# U# V" Q
-rw-rw-r-- user1/user1 13 2018-04-07 12:10 ./b.txt
0 C8 N0 ^ d+ C0 g
* n0 ~- T5 t' w; t解壓縮到指定的目錄 例如 解壓/home/user1/tmp.tar.gz 到 /home/user1/tmp 工作目錄在/home/user11 `( r+ l% n3 R5 N0 v+ D
# tar -C tmp -zxvf tmp.tar.gz 可以使用相對路徑, -C(大寫)一定要接在tar後面,其他位置都不行
+ L" R6 M3 V2 W( h( I # tar -C /home/user1/tmp -zxvf tmp.tar.gz 可以使用絕對路徑
: t- O5 b6 m6 l* ~# g: e/ m 如果工作目錄在/home 以外的位置就要使用絕對路徑! V% J* M7 {; G
.bz' \$ y7 Y. d6 w# i9 |( o) g W5 g+ S
.tar.bz9 i! V1 ?: L l0 w5 x+ s0 B
.bz2: m% |) Y2 K/ h
.tar.bz2/ k5 A& Z5 U' V
.xz
( l. I/ Y1 d. i4 h) Q- r- S# q.tar.xz. J: K( s( f4 K2 Z* \$ `
.Z
9 u" C6 D" s/ k( T6 O.tar.Z* x! Y' Y' O6 h" U
.tgz
9 ]# a2 ~. K( T3 Q.tar.tgz8 v3 E7 }+ {- f @- J
.7z
3 ?3 i* |1 R2 A) t: u% _. O.zip& S/ k; r# L k, Q$ L5 }+ J, C. ^
.rar+ }5 |/ L1 |# j3 w6 O7 e9 y8 @$ a/ P
.lha5 P3 u0 K2 p: S! {8 E! e1 W
, a; H, m) p& T9 Y% d2 wsplit : 大檔分割成小檔例如:
0 f0 k+ m; W7 d- [+ J6 g* B( s把一個500MB的檔案(file.tar.gz),分割成每個檔50M的小檔案可以用以下指令 , n* _9 M0 I' y$ d, k9 @, g Y, t) Q! U
split -b 50m file.tar.gz (m 可以改成G(giga))# H! T% T/ b- G" ~6 A- X
若要合併 可以用cat 指令把那些小檔案合併成一個大檔案 例如:
6 Z& V" b/ B$ `, ]cat xaa xab xac xad xae xaf > file.tar.gz# v' X* C2 ?% B# E
0 _1 o' J6 t5 @& U* c' u
+ d2 s2 t2 t1 s
參考自 :
* E7 M; {* o4 {! [http://note.drx.tw/2008/04/command.html% K" q- K+ o, o/ P3 |/ C. w) W9 b; G
7 c4 y D2 g& M5 Q& e1 m |
|
|