|
|
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的5 W2 G4 A/ ?: z7 c
# B$ A( t( E) F' |/ k2 U2 M9 D6 |- M
) y4 l. y/ ~( L. S- U7 I
一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件系统格式
: o4 `0 a3 x/ `* Z0 L. r v9 E, |# L! d& _
% n# D+ U) N7 b" |( K5 a8 t! L- @
& ?' q) h" d& N, Y5 h$ F; A; l9 d) j: }
2 g+ S2 |$ S+ `4 w' S二、为方便本次实验,我们新创建一文件。! k+ ]0 H6 D; C5 }) R$ ]& J
* k+ _9 `: I; F [4 O- @$ w7 }* K& w& @* s: k
# f& {! H' ?$ j7 R2 N- C
! \: V R, \1 ?* _3 T& P: y, @+ Z" ~
三、执行删除操作
# G4 B+ J$ @0 ~8 k4 o% j. X* P. ?/ ?3 j* l* x8 X
. I/ y9 G0 c, j; Z: e
- s& s) b2 L3 \' \, g+ r! `rm -rf web_1.txt! U c/ b" b; _" P
5 v- p/ i; p% C3 i6 B' C6 V/ U' P) f, X: @: E
9 P& z$ \+ {4 L
四、运用,系统自还工具debugfs来修复
' Q1 ]: b. k( U! G8 ]; H: |0 l4 d4 J7 S( j8 h5 q$ G
9 g* p% d a9 h6 V/ }
: `3 M$ z2 D$ ], H
1 v: A2 ]" e# S3 T$ f# {; Q/ `" [" G6 V. a
) P& U! q: B& h( c6 A1 _: Q" V8 r Z+ i
五、打开,刚刚被删除文件所在的分区; W4 v( ?% l! a+ m5 t) R
0 U2 ?" \) ?' @& ^+ i*****************************************************************************************
) G9 w4 y5 _' m7 d: D7 f# k$ i/ R3 x$ f1 O8 S
查看目录在分区, n" O. f. U& o5 J) n
/ p) m, V0 |: b% d( X
( ?' |, a5 z" S5 j
- r$ k9 J$ z6 ? U+ @0 ^* Z; ^7 E4 M, _/ U) G3 \# W
2 t) |8 |5 P G* Y7 X0 c
******************************************************************************************: {% Z ^/ }. F. }8 b
, y+ ?& e" L6 P1 w e- r& a2 _
0 J0 q3 ~; m! o l' y
- Q* a; P6 p% h/ S/ w& n1 _8 t9 ?) Q+ |9 B3 B+ W; E7 j7 ?
1 M0 N5 G- d6 M5 q1 W' }6 ~3 b
+ r5 I9 s7 C/ ?, _0 h: K+ C! |* r7 r, d9 F9 v+ V( z: A
9 c+ F H+ D& f5 a# D( |六、用ls 加-d参数显示刚刚删除文件所在的目录
% u* X: T7 J6 f- A2 ^; }- D8 A2 J' F# L& s
8 q3 L' Q6 a) Y3 c% F( W
0 L% S; _8 K5 b; A& [) b& L0 T7 M6 [
, e; }1 W- P3 _3 w* b U) ]8 v0 a1 w; H
$ o% J$ p" q2 ]# R6 \
七、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I <19662057>- L" o; |2 v4 r
3 S( b5 H1 ^8 w! O2 n! n
( W* B k+ O2 p$ m0 t
% v2 T$ j- `3 H
3 a4 a% N4 c' a0 Z0 C* w. N0 `5 z6 U
8 }2 u4 b5 I, N% X7 ?" { R9 \- q5 m$ V
9 O' d9 W* @6 y2 ?9 e( S) {& L' c. H7 ^$ }$ v, U
) h' ]/ O1 U: T* X八,执行完命令后,显示了一屏信息,我们需要的是下面这一行,并且要记住,后面的值! O! ~2 U6 y& u$ K# g: L- {
. Z6 m4 a# K$ E& i) d# ]! o6 s! Y' e H
~2 j# O+ m& e9 D+ _; a% N- X3 j
* G8 x2 O3 U9 _ H6 B& P6 x/ R2 H% k- W
5 `! S% u: b2 w8 w) o
. o" E8 ]# n$ u
: p4 m. T5 m9 g0 r9 Z: `
9 M- \' A. F( u/ [7 S9 r0 N1 T$ b/ @* v$ n$ F7 u% o! U
5 s/ m# a9 @: y
九、退出dedugfs
( J# e: d( f9 w9 n4 h' C. @0 B8 M. Y+ O* D7 ]/ M; Y
qiut* {' `5 ^3 G. B2 g0 N7 W4 F& ~% S
+ z' }& H4 M9 W+ W0 A% u; A* X# Q# s
" _: w2 }. I% p8 S
十,执行如下命令
: e. {: D- }: U( p# k+ e0 [7 u! c2 ^# z; u1 i
. }6 b/ M6 b9 \, `" ^3 G
* p, X; Y2 D4 c2 v) B- X
bs与下图offset值一致,skip与block值一致
$ a* W8 W( j; L) b: M" a+ y% X9 W; q( S# F
* A L/ K7 I$ b9 ~2 T1 C
: O6 f8 `( y0 [4 R
: z: ?7 K' l/ b/ P0 A# @5 F4 h; L/ A" h8 y. q5 n- j: g
/ O* h, j- c% m# m8 P十一,以上结果表示恢复成功我们看下/opt/wb_1目录下到底有没有
0 a! Y5 n9 B$ `1 o8 ~) K1 q& S5 M* o8 ^4 r& }0 D/ N9 |0 M
" r% }% j. z+ [/ |! d5 x! Z
F% m' u! f, e
" n/ _4 A9 v5 m, a3 b0 r7 x# r
/ x @: o" l! H( n C( O0 C# e, r/ ^* ^$ S; C t U( f) g
1 v3 K @8 k8 e3 L3 J恢复成功!
& a+ a* H9 ~* V) Z+ y2 S- F y G6 A) s& Q/ U
恢复文件操作* F$ s' ?" m$ z' n/ P3 k
环境:+ h3 S8 s3 }. O# \. Q, s
在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除7 a% N/ U7 [" \7 n
9 L1 J2 r/ R0 t6 C% c7 @8 `& f【1】lsof查看
& h& {0 [+ i+ a# K. V! Y6 o6 S4 g+ | q" |% H4 Q% h7 u
查看正在使用删除文件的进程号
3 T# Q4 M, Y: K( [! s2 P( z
) F: h; T% C+ @) { m+ rlsof /mnt
9 B) h0 f4 o3 w+ g- T q9 R4 B% i1+ y0 ^ E. l* ?5 [
$ {* L! U$ x* b& K0 F2 O9 x) f+ C1 C3 }% E) u
) G) p7 [ r. O' H b9 `; p4 W& B% Q) O0 Z- f! t" B$ m3 s. {5 w
【2】恢复
u3 s1 _+ q: n! z- E1 Z1 {' c$ B, o- \" J
切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中- O W* o! _# G9 }& D6 T
重点关注:PID 与 FD
# X3 F+ `0 l0 `4 y, a: o8 `" `% k7 a- X9 Y
cd /proc/31284/fd/6 Z" D8 Z0 I4 S5 k4 w1 W
cat 4 > /mnt/ferris_train.less; j; U* t* g/ |! g/ Z# b V
1
0 q& ?% c( x& H; [ S2
# Y$ ^2 P7 u t! s9 e( P3 ?* r: j: `7 j$ V% E
% L$ ^& ?; a0 T7 E2 G: x- I
5 i% f2 ?2 }% ?/ _ r% q7 T
7 x& M/ c3 B# {7 ]* e
1 x9 c: M+ Z; X& [4 Q3 D
4 I5 n9 O! \3 Pextundelete0 P- z0 Q" L+ N
原理:5 A6 `9 @: D4 W- D+ p
使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件/ Z( q+ b/ d/ M: M6 i, Z6 w( Q
) E' \+ Q, p% J3 t/ W
优点:
( S0 Q% x. P) w7 k/ Q相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快7 j: v' Y& ~7 Z! q! b+ P( ^' v
4 b4 P! b- t1 X" V
extundelete官方地址(官方文档):) X4 v5 s: {% d
http://extundelete.sourceforge.net6 D) u* W7 q1 v- o7 o7 c7 `
9 h6 ^1 b+ ^5 L9 ?! y
extundelete下载地址:
% I ^0 T0 C$ m0 f+ q5 D# Y7 ~http://downloads.sourceforge.net ... elete-0.2.4.tar.bz2
4 L$ }6 d, }7 S% t5 V1 P(最新版本的extundelete是0.2.4,于2013年1月发布)
; ~5 x; c3 L3 a3 Q" p4 \; u) Z0 g$ ?% Z! N
注意:
+ [# l7 o. w+ w l W6 m9 j4 v
$ h8 U; d6 x# J在数据删除之后,要卸载被删除数据所在的磁盘或是分区8 S9 x5 J {* \# g) _2 v
% a% B: N0 k2 `/ P1 @- n
如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
H) h9 f/ Y+ h) m
% ?* Q- d+ @7 P数据被覆盖后无法找回
1 R, {/ U" k. j* F6 \6 a, n% D
" R1 z. B0 b+ | [$ R6 q恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm
5 G) L) q+ I- l I+ E/ m, |' \0 M6 c
安装
U; Q0 O8 N& {$ ]7 V<1>依赖安装
0 b1 m3 B8 d5 _( z2 o6 P$ N3 s" N$ i" G' v* p
centos安装操作
+ y9 t' N: s9 R& l# g$ Tyum install e2fsprogs-devel e2fsprogs* gcc*7 \4 m# t9 l' V: n/ P, E+ w- m
$ B U, O. [6 I e! Q% }ubuntu安装操作
5 J. j! C5 d( y& ?0 X6 O. Vapt-get install build-essential e2fslibs-dev e2fslibs-dev
$ m! R, A- n5 l, Q8 P3 u/ ^' A1
/ d1 O! Q% A" d2 w l+ F# ~2
, ^/ J$ l: n8 |7 k3
4 J5 c2 q3 @ r2 p5 _4% u1 M4 r7 L) r9 ?1 D$ N/ [
5
0 | h3 c1 L- y/ M; |/ R- \; E<2>编译安装0 |( C! @0 [# w6 Q4 h) c, S9 V
0 O; M+ Y( A/ N: A
wget http://downloads.sourceforge.net ... elete-0.2.4.tar.bz2% g4 I; ~/ H+ z- J( _* M9 s) `
tar xf extundelete-0.2.4.tar.bz24 _; c- o q% g: C6 \% N
cd extundelete-0.2.4
1 Z7 N# t9 S- N( `9 _+ T& O' `$ x./configure- b# h: T3 y$ f$ [0 R, I5 I" H3 J
make
f0 ^0 t- t# t6 }& K dmake install( X/ c6 O9 r, J
1
# _* `6 R+ Y0 c1 T) `2
$ N' r" Z& H0 ~) P3
, T9 J0 G4 `# m8 r9 x% K" E4
+ N3 o1 O0 d" @1 k o8 k2 P5- b4 d7 d: s1 H7 L% ^$ K+ f# N( e% `
6) W% n; l c }% _: Y4 H( J0 l
& w5 `& X' W2 ?9 g& R; C/ `/ H; T0 Z! D# g% g( Y2 q1 I7 S4 ?
cd /root/extundelete-0.2.4/src
* A$ Y+ b" }# i: C1
( `! K& V: }! m/ T, y" ]7 _0 l$ n" k
* M3 k6 _1 v) h8 bextundelete -v 9 V. W- j* i( w& w, {. Y7 L
1
: e! U8 }* F% k% c( k, K9 a( ] X
# G, ?5 O/ v5 s7 h/ W- j5 m. A执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。% `8 M3 g) v+ K; R. T
执行make install会将程序安装在/usr/local/bin/下
) q! U# p. G* |! G4 M( z6 c- y1 S* H& s' H6 e& q: z, q
恢复文件操作4 O. a. m, W4 h/ m5 L
执行extundelete命令的当前目录必须是可写的。7 z9 U+ N8 w+ S) _
( {4 o2 O, u$ A6 z- F
<1>查看要恢复文件的分区的文件系统( J6 E5 L4 F. Z+ y/ ~1 `7 A( V
) z1 p7 E+ c8 R# Z* udf -Th9 l }8 b$ `4 {# G
19 X- x; X/ J7 j" {( A2 h
* ]- q- R6 U5 Z: r( {) a0 \2 V" k; g( c K+ |9 O7 P
<2>对要恢复文件的分区解除挂载( X# @9 ]- J, G# c/ ]7 K# O( E, }& i
& b1 L7 B" t- a, u2 J$ U
umount /mnt8 o' d5 a& |0 {) J3 a1 j
1
4 w J @, U Q" x% u, I: _% |. _2 |+ }
+ E; K; W4 }1 n( }
<3>查看可以恢复的数据
7 z% `5 d @5 i8 W! \1 u$ x$ P0 D, L; D! B( J. O7 v' a; K3 {
指定误删文件的分区进行查找
# g# f6 b0 J) X& C& l) R最后一列标记为Deleted的文件,即为删除了的文件0 c T J0 Q4 D' i: ~
! Z9 @9 P0 n( n, t6 r% S- mextundelete /dev/vdb1 --inode 2 (根分区的inode值是2)
; T: M( I0 d. b7 [0 L1
. n; a6 J* `. u6 |$ d& J
) I; W! j7 Z, A1 e, q- T
8 v7 T+ R# f3 L$ X<4>恢复单个目录. v5 l! a% T* K* b/ C1 K- o
* i# P: Q; a" \指定要恢复的目录名
& T/ J2 O) |3 m# D1 I- u如果是空目录,则不会恢复
7 b* H- L% I( v! ~, o; \$ P6 N" \' S' E0 Q* \6 H0 C
extundelete /dev/vdb1 --restore-directory ferris* E/ s6 t) z- ?; N+ `# y7 Z) d' ~
1, @. l6 Y% U9 b
9 \# F- ~% c8 P" ~% s& C6 W/ v6 k4 d7 H+ s0 _
2 ?# Q7 J" \# V# f. I, V
: `. ]) u9 s) j- l" y9 t1 `5 r当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。
4 i; \. T6 @! d' x$ _" o
( l2 k& s# O: }* m% P* G7 K<5>恢复单个文件+ Z7 N9 ]$ ~9 y/ B4 x$ Y9 B
( K7 b o/ L5 c6 n7 M& E指定要恢复的文件名. R! l7 d" z/ v$ h4 j3 C! Y
如果几k大小的小文件,有很大几率恢复失败
3 s- N) K/ ]4 A
/ U K# q. |4 D% jextundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz: d: J) c2 c$ L! s* E3 d
1
/ t+ |" p; c5 p0 q6 H# ~/ ?. [& _: K. @8 b. ~0 a; V' u6 f/ M% e% m
) b* Q! l3 m8 ~<6>恢复全部删除的文件3 J# O$ u7 P* U& `* b" o; `/ g% K
; L# M6 @5 [, g* l* Y
无需指定文件名或目录名,恢复全部删除的数据
, i# l6 O0 y! g0 x) E; A; U4 m4 H; |9 s1 ^
extundelete /dev/vdb1 --restore-all
; p- r5 L9 T, m( ~1+ U, I8 v- y( A; c4 g- F
* \8 H1 D: f! a2 H; d- `/ i————————————————
3 F, E* |1 A8 W
) S% F* h' C0 f) r/ L2 Z! R; z0 `, w, W$ e' V3 g3 P- p
|
|