- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的
7 p' o. ], m! s8 L' l7 k
1 O8 H3 H2 a1 F. Z+ d* i2 t
+ a3 q$ P5 T* o8 U, R% o3 h
- w/ Y, U- B S一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件系统格式6 v: }9 |# w- w: o0 i( Q$ `
2 q! Z9 C8 ]3 B
7 S0 x4 t; N4 t0 i( ]
5 c" X- Q4 W1 W F; a: Q( |& T
2 b0 r0 j' F' @0 _4 g- b4 ^ F. c0 ^( X w! r* Q; q' a
二、为方便本次实验,我们新创建一文件。
1 i+ M: y6 k( N2 }# R6 m0 ?( L0 O9 `; I5 a; C; V3 _! {
% n+ z: \/ l. v* O4 j& D' h
z1 R, `* B/ T! F
6 c( Z& C' y9 \ Q7 M+ N
6 g5 K7 b, n. J$ g' h8 _三、执行删除操作
5 h* Q2 z3 m3 S! ^2 p6 x6 ?( P4 {2 t, z$ c( N! M
2 C0 m4 x% s- \1 a- e1 H
+ {3 l/ C0 D* b1 r# D/ x" t. Q2 Lrm -rf web_1.txt$ d" Y2 e2 `/ m5 r: }1 ~
3 `. }( i4 t3 _: `4 ]8 L2 p) s
9 E$ j" A- }. e: Q9 }9 M
& ]. z* c8 g! Z( v5 @0 V四、运用,系统自还工具debugfs来修复
+ W+ R+ U( u7 X$ l/ v, d! {" a h# N+ ^
9 |% B. v7 U% i! L. D6 s5 S
+ i' l- g; a& K3 m, {5 f H6 j/ w( w: T; `' i! N8 N
2 I& m+ [% }$ N, [$ G) A3 D
: d0 P: w2 `: L" Q; Z" R2 g
$ X, y" s4 U; z6 E& G/ f五、打开,刚刚被删除文件所在的分区* V h4 b" d! Z0 J" v" d
$ D: |& w8 E3 L8 a3 y3 _* N P*****************************************************************************************
1 Q/ o, J# u; {+ \
* h( z5 }4 P5 r, h- Y# h查看目录在分区
9 g: A' j) I1 f% E9 B) b6 l; n1 z0 H* B7 b: V
/ f1 }6 E7 Z) p* I5 U) A
( n1 w. U0 |3 l2 M8 @9 ]# p5 ^$ J8 Q! E
" k# f4 O1 s1 a) G% Q+ P5 [
******************************************************************************************5 k" d/ j" w. g' Y" G: F5 w
N: N# x U4 ^
# c+ B1 t0 V3 B
4 A, I Q$ N9 M- Q8 W" l. Y
% w# h- g; o) z$ Q& F3 Y+ z7 r
0 A- H* O2 ~* _8 |
8 I& k) t) V! B( ]4 @- _1 V# q6 w0 y( w* ?7 {
W E. f. p7 h
六、用ls 加-d参数显示刚刚删除文件所在的目录
0 i2 @5 W1 z% u3 X& M$ M/ s9 u4 g' _! D# g6 k
7 D+ \, L5 l2 A$ E& q1 y
' Z1 a, e) m6 R) B% c# O4 l2 p6 Y
4 E0 c0 r& e* k
1 B2 h' a+ S. S0 P
1 {5 d) A5 X+ C) C( w
( z. {5 G, F0 v6 h9 k9 U七、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I <19662057>3 w4 \- e! s) S8 Q4 }2 y1 j
/ P4 f1 N; F% h2 \% r# B5 `* Z7 E( V7 l4 T# W$ L; r
% L& I+ ~0 f: `5 e
3 A3 Q2 F1 G3 N8 y
' J* O4 D8 }" h" o t8 A& ^+ A7 u% [4 r9 z8 n3 N- B
1 J% W1 O4 Z& R# t2 B2 N) X: `% O) G
' z& N$ Q1 y" j; m6 L* I2 b
9 Q5 G' a. k+ X ]八,执行完命令后,显示了一屏信息,我们需要的是下面这一行,并且要记住,后面的值
1 [$ f; g: I; G& R- o8 a
; K* T9 H+ E' A+ [0 b i: t2 X: D' u, a% n) v. ~( q" p6 x
2 m+ ^' n7 m& o; [7 Z) _% z3 ^' Z7 C, m' p& e/ r$ A
* [! b$ N4 H, i" U `: x) u
8 |0 ]4 M* ^' {4 j6 |3 w) t- b
( Y2 Z* J% W* ?% X. O
9 o2 P( o, U9 S/ q+ Y) X. I' ]0 g ~- {$ g, E
7 e- J+ z+ b2 K0 X
1 `& Z! F7 |5 Z" A7 s+ n九、退出dedugfs k8 B: O$ o, ? w' z
4 A0 v" C2 x( @6 J3 `6 @& Q
qiut" Q9 q( z# u4 q2 I, \
; ?. d. b" r# ]: y; d
! S- ?( i$ o* M
- B: ?8 R. Y& E8 c! n, k0 n. @+ K3 t十,执行如下命令
0 _% |% O Y% c5 K8 b' i
/ K! L- ?. c: I' a' M- L* u/ N4 h% k
. L4 P) _' q% g# c/ N7 l/ J7 C; f( y1 h0 l% Q8 w
bs与下图offset值一致,skip与block值一致
/ W& {6 z- I q+ q# B# `" b) @
5 n, \$ ]0 C1 u9 D" P1 ^! v% s
" W+ _7 A& Q; L; E& H, ~- p3 b6 A' u+ S/ Y
7 K$ R* r8 P3 H/ [! d. @3 x: z& E& b
0 X" l3 T, X$ P十一,以上结果表示恢复成功我们看下/opt/wb_1目录下到底有没有2 g* j# V' L0 G1 z2 T: |: d1 F
# t! a- s8 p! s7 @3 I. d9 e9 t6 E4 B+ Y# @* R( |& B# |1 u8 r! v
7 `- H/ R2 C8 k! q# C# T: R7 F+ s; J/ Y& z
5 c' P6 S& F; z/ Q8 Z; A
, \( N9 X9 i7 n* U
$ V* ], T) n$ p1 L3 H恢复成功!
' o$ o) C/ o7 \+ V+ ] c Y/ W% Q. ~( k) L, J% N$ I6 u7 o
恢复文件操作
& O; U4 k8 ^' N/ n4 t9 z' k环境:
. V2 z/ M4 R8 h6 Q在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除
$ d, D% E3 |8 b8 z' w" A+ [& P1 k# E. A3 T G5 T0 d. M; P
【1】lsof查看$ C) Q8 I# p; ]( c: k* c! F
* E/ j! m U- q- h# E查看正在使用删除文件的进程号& W4 N5 s9 i# [9 g& E- |7 K6 L
, G0 g5 o2 `3 t# A
lsof /mnt
0 ~, ]2 [0 `+ T1 S$ O: l* ~/ r$ I6 R
3 @ ]$ K- g, T; N
, _: w5 I" }' b
4 h ?# ?2 n. c
N# y& O- V, R0 \7 L. g【2】恢复0 H" n' p5 J0 k6 m
3 z( |, L9 D/ b# T& }6 n( z7 R
切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中8 F3 e' }; z6 k/ y& v4 I
重点关注:PID 与 FD
0 U3 ]4 n6 M% B4 T7 ~$ _# H: L' \9 B" v' J# d
cd /proc/31284/fd/. }& p2 `# \+ U; c
cat 4 > /mnt/ferris_train.less1 O+ J8 @- l! o: Z% N$ {1 h
1
8 I0 E7 x: e4 G8 @1 \1 S8 e3 j: d9 p2! s) S. ^ x( d8 o2 D
7 g5 m4 S* ~) |9 g* | E3 v) l7 T
6 @1 A, a$ G* ~! e- {' H0 n4 E1 K! \# r5 Y- U
7 \! u/ q3 n# m c- H& }
8 \: u3 A j- d* A9 U
$ z0 |7 z4 O2 q6 Fextundelete; ]. z7 Q0 r+ @4 X: C I
原理:
) G j6 O% l; } z5 H+ |使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件& V1 N1 L! o& N, T( o
4 N O) X! h/ i4 P; C优点:
+ c5 X& F) C/ M/ V相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快
7 u; N6 N! {. |" p$ c$ g* |; j) j5 P; s; h) D8 f
extundelete官方地址(官方文档):3 k- T3 P- ~: [
http://extundelete.sourceforge.net
; }& S8 X$ N" U# N4 c2 D! s% g3 m& ^3 E
2 G% l6 T8 a+ g& gextundelete下载地址:
5 z. Z8 X- C) ~) x8 qhttp://downloads.sourceforge.net ... elete-0.2.4.tar.bz2
% h& _8 W- v4 K/ C' k/ I" r(最新版本的extundelete是0.2.4,于2013年1月发布)
s. Z, ?. p/ {/ t+ u
1 B# z( ] }1 T1 t注意:
" }2 y, Y# C3 f9 q) g( D9 s! ^& J0 V
在数据删除之后,要卸载被删除数据所在的磁盘或是分区
) `6 P3 D; S+ d$ l+ d& b% y' N7 W2 K
如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
; L, M: l/ a. m) A# Y" x+ ]' a* |+ l% b9 F) e
数据被覆盖后无法找回
& i" X7 a8 U4 a
9 W3 n. l( Q- A' h恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm
* ]3 @4 \: f$ H% A& {$ O5 I6 M. u) c; ^! `7 M$ a- W0 T9 J* c" Q
安装0 C R: S2 Y8 E: B4 D% M" q5 \0 {
<1>依赖安装
0 ?$ s/ W( H m' q$ A3 s( I2 E! ~1 t7 E% `; p- w
centos安装操作/ N' z5 t7 A1 b4 ?/ X
yum install e2fsprogs-devel e2fsprogs* gcc*' {2 e8 `1 S$ {+ {. l1 R1 R4 W
4 a* f8 l: f& ]! I+ i: mubuntu安装操作: F; {5 e* w% `0 _0 g7 v
apt-get install build-essential e2fslibs-dev e2fslibs-dev
( z# i0 Q) D( A15 j2 j5 a( D/ `
2
# P0 T$ V+ B: U; N4 t4 @3' P6 g9 R5 Z/ f! {8 M+ N( y
4% _" @( { E3 L
5 S! o; N9 q. ?: a4 V
<2>编译安装
0 S* u+ k, n% W1 y+ ?( N6 g& ~% d; q2 Y5 }9 n$ o
wget http://downloads.sourceforge.net ... elete-0.2.4.tar.bz2
, m$ y+ N+ J3 \" Star xf extundelete-0.2.4.tar.bz2' L8 i) \( r$ l, @4 |7 W& P6 }
cd extundelete-0.2.4; W" ]+ p7 I4 W3 |
./configure
3 ?' F: H+ Z3 zmake
; m, F; n2 m) A1 ~0 z4 gmake install5 ^8 ^( p; R- @. p* O8 G) n
19 m1 p; I3 l% i1 ~8 L
2. c: C- ~" D/ {7 v/ X A
33 d% y, P; n L' a9 Z, p. `2 g
4
& ]0 b4 H: T( y1 t5. p$ p/ g3 m* T
64 w' A* @/ O2 H: C$ |
% i: L- j3 X) L3 ]% t2 d0 @1 P* j5 b6 `8 O2 x
cd /root/extundelete-0.2.4/src
) w) u1 ~8 f5 \7 ]15 I! g, x$ H& [) x8 w
/ _* H. M3 D( Z0 H
; [% `1 d# h' l2 ~6 p- }* iextundelete -v
$ E9 H4 c, }0 J17 ~! [# |; J) K" _" R k
5 q& c# D6 |. Z$ P5 S0 C
" O9 I6 \- F' o5 T
执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。! x' _; |' c. `2 ]; Z' e5 \% `
执行make install会将程序安装在/usr/local/bin/下+ V6 u* [+ J4 @* S- X+ X6 E
$ c4 D0 A6 u- L' u# }7 A2 I
恢复文件操作! o1 q* s8 v2 f, n0 @- q
执行extundelete命令的当前目录必须是可写的。
$ o9 T1 j9 ?+ e
/ H; g4 K3 {. S' k( T( I0 n<1>查看要恢复文件的分区的文件系统
N5 W& \9 x% Z9 y# D0 O
9 z& i) U9 ]4 A9 Y Z7 Vdf -Th
4 V' `; ?, {/ y1 g) z5 Y2 x' T4 a4 E' }- p1
2 V- F+ G* L1 Y3 x% l" I; d4 y6 T% C5 m+ p! d% @) y) |
! I, u' n; ]7 I3 U& t4 I, X" v. |
<2>对要恢复文件的分区解除挂载" z8 u- f! ^5 i
" n7 C. r, `0 P9 {
umount /mnt
. d" N3 F, q; h0 K1 G8 g6 S$ q' i
9 m j9 y$ n3 P1 y7 w2 j! ^8 [
4 H! f. G* X) q9 i* C
<3>查看可以恢复的数据
$ |. Q! [6 k) h8 s
, o* `$ L' P: R+ `指定误删文件的分区进行查找
) D$ ]$ P. z1 G8 h0 r: {) ~/ D最后一列标记为Deleted的文件,即为删除了的文件) Z; e, Q5 Q: \# Z% L. u6 @
5 M' d5 v( {1 \
extundelete /dev/vdb1 --inode 2 (根分区的inode值是2)- z/ A- h c7 B" |4 K. F
1
$ G. H- n* l' d9 N
( t3 L6 ]- z3 ~( n* Z7 B
6 |0 j; u B- ~3 U8 l) w' {<4>恢复单个目录; ?. S2 J4 L7 b0 i8 a2 r# @
; ]/ ^- k' j2 D
指定要恢复的目录名
$ M9 v7 Y5 V1 c8 u如果是空目录,则不会恢复( G! v. n2 W) L2 {3 M
% C5 z4 f' [" \! t/ rextundelete /dev/vdb1 --restore-directory ferris5 t# n3 Q8 w* {$ |! S$ Q% z! ?
1
# F! U' j+ a7 M* B) {5 V6 v0 L0 ~/ i$ {4 t& c9 r2 H! o" ]
3 o/ l* T* i- P/ S8 k
6 L T2 u* c9 C2 I3 n/ `
. d+ u+ s. N- B当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。
% Y8 q( s5 b: }9 V4 y: R
2 E x$ A, n$ }, t- u* h<5>恢复单个文件
* \2 D, g4 p. r$ l2 C% U5 }' z: n5 c$ Y3 j2 N( `- B8 `! k9 M
指定要恢复的文件名
! ~5 t! J7 _( C! S/ j如果几k大小的小文件,有很大几率恢复失败! n" ]( R& {9 B1 s8 Y
1 i* U+ `4 W+ X) |& ^! w
extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz6 h7 {1 r$ A5 k7 W8 I
1
* m: v) Q1 T6 \6 p( M' L. }" ~" d
! f" b2 I$ x) p0 i
<6>恢复全部删除的文件7 G$ k7 t3 v( C+ X/ I+ O' V
+ s' n4 n: p7 x! Y3 A
无需指定文件名或目录名,恢复全部删除的数据+ ]% p1 Y5 f( h" \9 s. b o2 y
' P) b. O" |% w) m extundelete /dev/vdb1 --restore-all
# w- u4 O* N, p( i2 @6 d% n1) T6 b$ [9 ~2 q1 D' E
! p1 B0 J' r8 q2 O
————————————————- @6 P2 _" o' A
8 K. q* L1 E3 k8 ]
& V. W7 X {$ X$ A6 b$ |6 G
|
|