易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3551|回复: 0
收起左侧

Linux文件误删除恢复操作

[复制链接]
发表于 2020-4-27 10:48:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的
2 L, x! M# q$ S! k8 m7 {2 e0 @" }5 T5 \2 Y8 x

# G* L/ O- f/ t# {" ?$ f' ~& A6 i5 T& \0 |4 A" C
一、用运SecureCRT远程对操作系统上,查看一下当前系统版本号,及文件系统格式
2 }; g! Y. y/ \, C, X! O4 H( g% u* F1 l/ J( y$ u3 u
) J% D: q) |' s+ e

4 H: p1 E6 T( Y1 u
! t; \7 D8 W5 s  q9 a) |; K  G: X
+ y* x* t. A7 x9 W" c二、为方便本次实验,我们新创建一文件。
2 B0 q/ w* e! w6 o  I% B; U8 s6 Z' Z8 \4 J0 S6 O& j
' P4 r  X" z( ?+ J

7 e8 _1 ^0 c4 |: b, h
5 E9 J0 C  Q' o: k! S  a2 }
/ y0 q; d, A' B2 Q* p( i3 i三、执行删除操作
/ H7 `1 N* g# F6 q7 G+ Q( b: [; [
) ?9 g2 }2 b7 a& R$ T5 V) J" a1 J; @" y

: U" C9 n) N. T- I# m1 {+ C, Qrm -rf  web_1.txt
" s) V4 ?. m/ T3 G8 I) A; o
/ |1 J% ^0 K9 _6 Z6 U1 \% C9 G1 `* x- J& m/ Q: D

' o  g% ]6 ^2 a四、运用,系统自还工具debugfs来修复
$ V. m1 x2 S; D! L) q- `
) W8 r' j; }7 \+ J  Y; E
6 Q7 [8 v( r; B6 A) }( _% J. `5 L4 T5 W
% w& [" e6 |( [3 T6 O5 E

) J: r$ W" [( i1 h0 W# o
; U  H: ?- W* Z6 B1 I5 }. W8 `* v" G% b4 B! C
五、打开,刚刚被删除文件所在的分区
3 `! ]. @; b3 \3 g, @; `+ k) v4 j2 O7 k  l. V7 \
*****************************************************************************************" m7 o8 Q( O9 T; E4 z
8 q6 B6 k0 P6 H* q
查看目录在分区* N! N  ]) o3 o4 E+ K, ~4 W$ _* F

" Z1 V) S! u) B( O
+ q9 t7 f: `6 f/ L6 [1 `; u$ B) B8 C3 w

5 g* k; p& r+ j% @  U
9 r7 n5 G! p" p2 @******************************************************************************************$ C" T* i; J$ x
4 k- k6 e8 G5 F* _% Z

3 ~( z* L* M9 g" o  i
7 U! w9 L$ S5 n6 Z' M1 ]. x; p4 z( J4 v& l% F1 R- v

5 h( N! o- ?7 `8 f
- \7 D; r8 ~( G) k0 _4 K) z% `
: a! V' }  @9 X% |7 C, K6 k
& |; G9 O) a+ }六、用ls 加-d参数显示刚刚删除文件所在的目录
- W: p. H8 {  _3 z6 N; q! D* }& R  A6 j+ f; r% A, a: d' U

6 E/ v# v; e" [, r( c: y" z; g+ o8 e. v  m: W; W0 F

; _* P2 ?5 N. Y6 s1 j4 T7 M4 I& k  o4 F3 b. Z  Y9 r2 `

, ?  k9 j6 K9 a6 Q- {* J' q. T
七、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I  <19662057>
, h& T% }3 {' l/ B, S8 X% K* K' Y, z5 a2 c% X$ L6 c/ q
6 R$ R" Q2 }8 }: I" s5 W

/ }! i+ C. l- z0 ~( X! k  g3 Q5 j- v. f  i4 t) t9 D& W

5 i' h. i# f7 g0 L' m% t; }" s, n/ ]" H/ O

+ G8 e$ h# e3 Z1 c# g  b+ q$ L5 F4 B$ @  q. d0 O5 E- [* h8 T9 _
- v* Y! k4 M. r
八,执行完命令后,显示了一屏信息,我们需要的是下面这一行,并且要记住,后面的值
( B! u4 w$ P, L, a/ J, K+ I1 ]+ ]) x1 l$ d" H

' d9 d1 K/ x, E: K% s, N. I$ Q
5 s7 Z6 }% @* ^$ u$ H
2 @: i( B6 {. H. m& k2 p4 O& Y+ E: O% n

- k$ m& j1 K0 b5 D
. ], M% h; E2 _* L: V3 M( {; d/ E
& e, T5 X( e. ?, k
. [9 F! l+ Y0 O5 [8 K7 B& A0 O3 W" T) V

7 H) |7 U, ~- S6 _& k+ T九、退出dedugfs( y# h/ @5 r1 T2 {2 V; D

8 F9 i/ j; l9 V' Yqiut
' {6 M  ~8 V4 \- Z! u' g
) Z. s! n, c. r# J/ i, T" {) B4 R- W7 a7 o6 d8 T
) r4 u& R# I8 ^
十,执行如下命令; W' o2 J8 z3 _) O; Q5 Z. |
8 Q3 ~( @5 L8 [9 j) y

# w+ X; d7 ~4 H( c# b- L2 y) S" e' h& u1 p& Q
bs与下图offset值一致,skip与block值一致
7 W) _* s6 D8 e& V
: T8 C: @7 p0 Z! X; }0 O$ D& \; p$ ^; b5 x
: i% I5 V: Y+ H2 _: m- g( w- X0 c; F$ S
+ U! j# m# d7 t, d' G) T

) b0 l* ~8 }# e" c- p! z0 K
/ i" }3 U3 E- p, d' q: S, x* n十一,以上结果表示恢复成功我们看下/opt/wb_1目录下到底有没有) V: @5 y& o0 t: [; z5 d
8 }, T3 |; C* R* T: `8 s4 t
/ |+ M9 \9 h$ R# N

+ \2 U9 T( {6 J6 r9 [7 b9 C' c# x- f$ R, l. |- _2 ?1 V: Y
2 ?0 }0 K7 Y$ t- Y- @
$ B& G( m: |* E

2 v! _3 a5 f( t9 O: }恢复成功!
8 R" ^$ c  c8 [
3 ]; W, L/ `4 K9 P% S恢复文件操作5 ?( u. I! j1 g3 r0 @2 S
环境:  s0 s9 w8 \  u, i
在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除
! L$ I7 X  E  ?/ r
1 Q+ p  G/ W# }【1】lsof查看7 m6 ^" ]7 r- Q8 p8 Z) p/ |+ B
& S6 O" {- f# _6 g/ c; W7 W* d
查看正在使用删除文件的进程号% q5 N- ~  U* `2 e

; ^4 ^) E8 h% T6 klsof /mnt) Z8 \9 |' S) U) Q, W5 |) w
1
5 r; ?# C- t) N7 V3 b1 o, k5 h
6 A* g' d; U& K. s3 D. N
1 M* I: L# t5 \+ @3 f: ]$ m
. a1 d& R$ L) J- x' k
  d1 v+ D! d& ]8 \* E/ f) [【2】恢复
0 |; F7 |3 j; N: ^# U+ d8 ?" `! ^- y9 k6 l* h8 `
切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中8 k* T8 M* V. ?6 b$ ?6 ^
重点关注:PID 与 FD
$ K0 W3 T" b* f" \0 u/ g9 c  c2 x2 i$ z* F2 @3 @* p# {& L
   cd /proc/31284/fd/
2 ]$ }2 X/ Y+ }3 R) l6 |   cat 4 > /mnt/ferris_train.less
/ K- R! u' Y( g5 q) k9 i1
8 E, S( w; ?8 r2
8 q! m6 Z+ A- o* X5 b$ m. |$ k/ Y  j2 a& |: Z6 M: B5 s+ R
3 o& ^* b$ o2 i! J5 t& ?

4 I+ h  O8 ^% p  z* ^7 r# I! |& z" g+ z3 O( u

9 Y5 _9 F  O4 C* a0 {: w% v7 V+ Z4 A
extundelete
- c1 I3 W3 m& u原理:( ^" K. @; l9 s$ n; h9 G
使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件
& O7 T8 {* i, {6 y0 M9 {+ w( n2 l7 h- u' k; |
优点:+ q+ q$ `# P; }& ^3 T
相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快% n% ]6 y8 g- q2 O7 V+ K8 t$ N
/ V6 j- T* f8 J5 C
extundelete官方地址(官方文档):  x$ I$ ?# ~+ t5 [* I( F* i. m
http://extundelete.sourceforge.net
4 y' B% m) ^. h+ z; G; v" h
; S( z+ H) k, ~  }extundelete下载地址:9 W9 B, N1 ^: x$ Y7 j
http://downloads.sourceforge.net ... elete-0.2.4.tar.bz22 A; t: n9 `2 e! i6 w
(最新版本的extundelete是0.2.4,于2013年1月发布)
4 r& ]5 i, v' Z# R, g& {( N9 I' b7 I5 R# ^
注意:
) l# Y3 |0 m& o( ^( K+ \! J& Y" J6 s  D6 T! e& w+ l
在数据删除之后,要卸载被删除数据所在的磁盘或是分区! E0 y2 M2 E$ _9 T5 \0 Q- }

4 G8 f6 y0 S, s# h, e如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
( U' F: d: l  |! B. I' o" f( W& U( a; q
数据被覆盖后无法找回3 }; l& @' R, g% r: `( w

  a6 p4 ?8 N& l) J. D) P9 ?' |恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm
0 o3 K+ @! J) u* B2 i) G- }
- F# I) z( m# Y5 ^8 w安装
9 d- K* ]3 F. P$ ~<1>依赖安装' G7 \' ]4 f) r6 N4 ~- }5 K

: p: T% L& I+ B1 [: L5 }  k7 ncentos安装操作1 r) F+ g+ ^1 M7 x0 M  B
yum install e2fsprogs-devel   e2fsprogs* gcc*6 ?) k. Q2 q! O. G) g

  L, x; \: w6 N. \ubuntu安装操作
' X$ v6 d( i% Uapt-get install build-essential  e2fslibs-dev  e2fslibs-dev; s, k7 y, y+ b8 c5 }$ V: [& ?
1/ N6 W9 |# V$ [5 f0 c
2* Y, l0 L/ F6 \: s8 m1 s- r
3( v: u/ z4 D8 S3 M2 V
4( f! ~# W0 M8 E% o7 I6 C. C
5
, c( l7 H. w* ?* {# c% R<2>编译安装
/ R. I. C- c$ m5 Y' Z) u, Q# A1 f( N8 l
wget http://downloads.sourceforge.net ... elete-0.2.4.tar.bz2
, V6 |! K- g; @# V2 t* ctar xf  extundelete-0.2.4.tar.bz2" y! E% j, ^5 D2 [2 F& @( m  p
cd  extundelete-0.2.4' f8 j8 n2 i3 ^- q
./configure
5 u6 p9 G9 g: B" C( @make
) t' @; i" f7 v) q; Dmake install3 w1 e) o, R" D5 M0 D7 G
1( G) @4 U  V9 T0 x0 j
2) a* |  ]  A+ B& W- S2 C$ v+ u5 p
3
0 v9 K1 h) p& R2 ^# E" o4
" v, O+ O4 W9 H- U& s% z5
: m5 ]  T9 n4 p( Q1 f2 Y% Y6 j& d6
! Y3 }0 \9 j- L+ I8 n/ H8 q9 W2 |1 j. q" \( _

! D/ _+ q4 a7 b% D+ C/ d  S9 fcd /root/extundelete-0.2.4/src
4 ?- Q8 {0 c' y1
" B; O* W* M8 t, }/ s6 v9 d) ]9 A1 z
( S1 x7 {5 @' b! `( Q8 v6 ?4 a
extundelete -v
" b( t# }$ j* M1" D2 ?& R# y0 p/ }& x# s/ f5 o
4 i; g2 @# M' z

7 F9 `5 ?; \- R. W执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。0 y( Z2 c% Q6 Q+ N0 h
执行make install会将程序安装在/usr/local/bin/下  P* ~. L. p! l

6 E, _0 e% f+ a恢复文件操作- j  Q8 \7 d1 @% ^
执行extundelete命令的当前目录必须是可写的。
" c3 \2 i6 A8 U# K5 B7 ^
: n- o& b' K, R' d# A5 `  W<1>查看要恢复文件的分区的文件系统
9 v+ N1 _+ T) K1 y# i( A& T7 ]% ~" ~* {8 S; l# l
df  -Th; r( Z! g" ?( u- z
1) B+ \8 j: f. B8 X

  b7 O1 k( l5 F6 j2 Y, f1 L
( G* u  _; d( x! J3 p3 N  Z! R<2>对要恢复文件的分区解除挂载+ Y# A4 [& q' T

' l8 y, l2 i1 a2 Z/ ]3 J# numount /mnt0 }0 o# ~5 t: i$ u4 C
10 t" s0 l7 l' t/ d4 I( f% W

4 }8 K- V7 }, h9 t
, x% u& O) m# Q) ?* J2 R) z% f$ B<3>查看可以恢复的数据
9 @! ^% G) y( Z0 Q! u" o# ~- `& C: X, L! l2 B8 R
指定误删文件的分区进行查找
) y: u0 V6 {" I% F* G2 y8 N; \; _最后一列标记为Deleted的文件,即为删除了的文件
& h. W- A4 B) B/ U/ ?! g- n$ z
  I6 H1 ]+ u* wextundelete /dev/vdb1 --inode 2 (根分区的inode值是2)5 J1 X# y% Y  q
1
: a3 [1 K3 @$ ^. O" {! ]/ [! S+ @4 V8 ]7 E! X
" c; g  `5 q5 T, {3 o! ]
<4>恢复单个目录
# }5 Q; d; H: e9 ~
5 O% U8 w0 h# N7 p指定要恢复的目录名
) X) s4 z6 c: V如果是空目录,则不会恢复& D8 ^2 M  y- }6 X

( }6 x9 \# M/ M2 }7 Dextundelete /dev/vdb1 --restore-directory  ferris" U; \& V5 W7 R/ L/ p' N
1% j) ]) r+ M4 f% ]& t

* B6 E6 [: J/ l- z# @4 d6 B, A" ]  A; d0 j

6 p4 O* [1 p; m( }) {8 L- C6 p% L' ~3 Y  ~8 J( v2 W* e% L; \' f$ n
当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。9 {# }$ [3 b' g  [% r1 a2 X
" Q6 Z8 K- o3 y0 f$ D# N3 u
<5>恢复单个文件
/ O1 T# j0 i7 u& k5 p. d& C: v
9 V  o* a- N0 R) f/ p7 O指定要恢复的文件名
7 ]/ }) z3 ^( k% E( f4 R7 t7 L& Y如果几k大小的小文件,有很大几率恢复失败0 D5 d% t6 r. S4 X
1 B+ P3 F  a- E' S: s8 N
extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz+ V. u: c3 z+ m
1
, V- X. V, }  s& h2 L2 p' Z( J6 U
, S2 r! D* f9 O! Y+ _  S1 }* a3 x+ b& M- Z- X7 O# y& G- _' r
<6>恢复全部删除的文件
% U2 s7 ^2 I% o0 M% ^0 q" R) O* O
8 Y$ F" g6 p8 ~/ `" e4 |6 p5 V7 K8 h* B无需指定文件名或目录名,恢复全部删除的数据( p8 G: Z" H: X9 w$ V! t
3 W1 v) q1 z4 Y- W3 `6 z- d1 N
extundelete /dev/vdb1 --restore-all' O& L. C' v% u" s3 X2 b
1
0 z; H1 `7 B; P8 C5 J- P
* b( E) Z: v5 D$ s+ s& N————————————————* V) D+ S: ~% M  w% ?6 S  Q
5 W7 h) e2 N( _: O

" ^& ]- Y0 W5 u. ~1 k
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:40 , Processed in 0.053570 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表