linux下误删除文件的恢复分析.docx
- 文档编号:30382148
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:13
- 大小:35.02KB
linux下误删除文件的恢复分析.docx
《linux下误删除文件的恢复分析.docx》由会员分享,可在线阅读,更多相关《linux下误删除文件的恢复分析.docx(13页珍藏版)》请在冰豆网上搜索。
linux下误删除文件的恢复分析
恢复Linux下误删除的文件
创建文件、查看,删除文件
touch
作用:
常用来创建空文件
语法:
touch文件名
#touchtest.txt
mkdir
作用:
创建目录
语法:
mkdir目录名
例:
mkdir/tmp/test
[root@xuegod63~]#mkdir-ptest/a/b/c
-p连同父目录一起创建
语法:
cat文件名
例:
cat/etc/passwd
复制文件:
cp
作用:
复制文件
语法:
cp源文件目标文件
例:
[root@xuegod63~]#cp/etc/passwd/tmp/test/
[root@xuegod63~]#ls/tmp/test/passwd
/tmp/test/passwd
[root@xuegod63~]#cp-r/boot/grub//tmp/test/
-r包含子目录和文件
删除文件和文件夹
rm-rf文件名或目录名
-r递归删除(可以删除目录和目录里面的东西)
-f强行删除
[root@xuegod63~]#rm-rf/tmp/test/
注:
以这种删除后,能不能恢复。
能:
1不能:
2
Linuxext4文件系统上删除文件,可以恢复:
extundelete
windows恢复误删除的文件:
finaldatav2.0汉化版和easyrecovery
扩展:
Linux文件系统由三部分组成:
文件名,inode,block
windows也由这三部分组成。
a.txt-->inode->block
文件名存放文件元数据信息真正存放数据
查看文件文件名:
[root@xuegod63~]#cp/etc/passwda.txt
[root@xuegod63~]#lsa.txt
a.txt
对于系统来说,文件名只是inode号码便于识别的别称或者绰号
Inode节点
存放比如文件的创建者、文件的创建日期、文件的大小等等。
这种储存文件元信息的区域就叫做inode
中文译名为"索引节点"。
查看inode号:
?
节点?
[root@localhost~]#stata.txt
File:
"a.txt"
Size:
1338Blocks:
8IOBlock:
4096普通文件
Device:
fd00h/64768dInode:
144331Links:
1
Access:
(0644/-rw-r--r--)Uid:
(0/root)Gid:
(0/root)
Access:
2016-09-2223:
07:
48.889204926+0800
Modify:
2016-09-2223:
16:
00.433198037+0800
Change:
2016-09-2223:
16:
00.433198037+0800
block块:
真正存储数据的地方磁盘
删除:
删除了什么?
误删除文件后,第一件事要做什么?
?
?
如何避免误删除的文件内容被覆盖?
?
?
卸载需要恢复文件的分区或以只读的方式挂载目的:
不在向此分区写入数据避免覆盖之前的数据
注:
删除时,只删除了文件名。
另外,我们可以从inode中读出文件名的名字,所以通过inode可以恢复。
下载extundelete
开源软件发布中心
准备测试分区:
[root@localhost~]#fdisk/dev/sdb
DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel
BuildinganewDOSdisklabelwithdiskidentifier0x3e60339f.
Changeswillremaininmemoryonly,untilyoudecidetowritethem.
Afterthat,ofcourse,thepreviouscontentwon'tberecoverable.
Warning:
invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)
WARNING:
DOS-compatiblemodeisdeprecated.It'sstronglyrecommendedto
switchoffthemode(command'c')andchangedisplayunitsto
sectors(command'u').
Command(mforhelp):
m
Commandaction
atoggleabootableflag
beditbsddisklabel
ctogglethedoscompatibilityflag
ddeleteapartition
llistknownpartitiontypes
mprintthismenu
naddanewpartition
ocreateanewemptyDOSpartitiontable
pprintthepartitiontable
qquitwithoutsavingchanges
screateanewemptySundisklabel
tchangeapartition'ssystemid
uchangedisplay/entryunits
vverifythepartitiontable
wwritetabletodiskandexit
xextrafunctionality(expertsonly)
Command(mforhelp):
p
Disk/dev/sdb:
10.7GB,10737418240bytes
255heads,63sectors/track,1305cylinders
Units=cylindersof16065*512=8225280bytes
Sectorsize(logical/physical):
512bytes/512bytes
I/Osize(minimum/optimal):
512bytes/512bytes
Diskidentifier:
0x3e60339f
DeviceBootStartEndBlocksIdSystem
Command(mforhelp):
n
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):
1
Firstcylinder(1-1305,default1):
Usingdefaultvalue1
Lastcylinder,+cylindersor+size{K,M,G}(1-1305,default1305):
+2G
Command(mforhelp):
p
Disk/dev/sdb:
10.7GB,10737418240bytes
255heads,63sectors/track,1305cylinders
Units=cylindersof16065*512=8225280bytes
Sectorsize(logical/physical):
512bytes/512bytes
I/Osize(minimum/optimal):
512bytes/512bytes
Diskidentifier:
0x3e60339f
DeviceBootStartEndBlocksIdSystem
/dev/sdb112622104483+83Linux
Command(mforhelp):
w
Thepartitiontablehasbeenaltered!
Callingioctl()tore-readpartitiontable.
Syncingdisks.
[root@xuegod63~]#partx-a/dev/sdb#获得新分区表
或
[root@xuegod63~]#reboot
[root@localhost~]#mkfs.ext4/dev/sdb1
mke2fs1.41.12(17-May-2010)
文件系统标签=
操作系统:
Linux
块大小=4096(log=2)
分块大小=4096(log=2)
Stride=0blocks,Stripewidth=0blocks
131648inodes,526120blocks
26306blocks(5.00%)reservedforthesuperuser
第一个数据块=0
Maximumfilesystemblocks=541065216
17blockgroups
32768blockspergroup,32768fragmentspergroup
7744inodespergroup
Superblockbackupsstoredonblocks:
32768,98304,163840,229376,294912
正在写入inode表:
完成
Creatingjournal(16384blocks):
完成
Writingsuperblocksandfilesystemaccountinginformation:
完成
Thisfilesystemwillbeautomaticallycheckedevery30mountsor
180days,whichevercomesfirst.Usetune2fs-cor-itooverride.
使用新的分区表:
[root@xuegod63/]#mkdir/tmp/sdb1#创建挂载点
[root@xuegod63~]#mount/dev/sdb1/tmp/sdb1/#挂载
查看挂载情况
[root@xuegod63~]#df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/sda29.7G3.8G5.5G41%/
tmpfs569M264K569M1%/dev/shm
/dev/sda1194M28M157M15%/boot
/dev/sr03.4G3.4G0100%/mnt
/dev/sdb11012M34M928M4%/tmp/sdb1
复制一些测试文件,然后把这些文件再删除:
[root@xuegod63~]#cp/etc/passwd/tmp/sdb1/
[root@xuegod63~]#cp/etc/hosts/tmp/sdb1/
[root@xuegod63~]#echoaaa>a.txt
[root@xuegod63~]#mkdir-p/tmp/sdb1/a/b/c
[root@xuegod63~]#cpa.txt/tmp/sdb1/a/
[root@xuegod63~]#cpa.txt/tmp/sdb1/a/b/
[root@xuegod63~]#touch/tmp/sdb1/a/b/kong.txt
[root@localhost~]#tree/tmp/sdb1/
/tmp/sdb1/
├──a
│ ├──a.txt
│ └──b
│ ├──a.txt
│ ├──c
│ └──kong.txt
├──hosts
├──lost+found
└──passwd
删除文件:
[root@xuegod63~]#cd/tmp/sdb1/
[root@xuegod63sda4]#ls
ahostslost+foundpasswd
[root@xuegod63sda4]#rm-rfahostspasswd
如何避免误删除的文件内容被覆盖?
?
?
卸载需要恢复文件的分区:
或以只读的方式挂载
[root@localhost~]#umount/tmp/sdb1
上传extundelete到linux中:
从windows上传extundelete文件到linux,安装xshell或者CRT
[root@xuegod63~]#rpm-ivh/mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
安装后,就有了rz命令和sz命令
rz :
上传windows中的文件到linux
sz:
将linux中的文件传到windows
解压并安装extundelet
[root@xuegod63extundelete-0.2.4]#tarjxvfextundelete-0.2.4.tar.bz2
yum-yinstalle2fslibs*
[root@xuegod63~]#cdextundelete-0.2.4
[root@xuegod63extundelete-0.2.4]#ls
acinclude.m4autogen.shconfiguredepcompLICENSEMakefile.in
README
[root@xuegod63extundelete-0.2.4]#./configure#检查系统安装环境
Configuringextundelete0.2.4
configure:
error:
Can'tfindext2fslibrary
[root@xuegod64extundelete-0.2.4]#echo$?
1
一个快捷方式:
yuminstalle2fsprogs-devel-y
[root@localhostextundelete-0.2.4]#./configure
Configuringextundelete0.2.4
Writinggeneratedfilestodisk
[root@localhostextundelete-0.2.4]#echo$?
0
[root@localhostextundelete-0.2.4]#make&&makeinstall
make-sall-recursive
Makingallinsrc
extundelete.cc:
571:
警告:
未使用的参数‘flags’
Makinginstallinsrc
/usr/bin/install-cextundelete'/usr/local/bin'
[root@localhostextundelete-0.2.4]#echo$?
0
开始恢复:
方法一:
通过inode结点恢复
方法二:
通过文件名恢复
方法三:
恢复某个目录,如目录a下的所有文件:
方法四:
恢复所有的文件
[root@xuegod63test]#extundelete/dev/sdb1--inode2
Filename|Inodenumber|Deletedstatus
.2
..2
lost+found11
passwd12Deleted
hosts13Deleted
a14Deleted
方法1:
通过inode结点恢复
[root@localhosttest]#extundelete/dev/sdb1--restore-inode12
NOTICE:
Extendedattributesarenotrestored.
Loadingfilesystemmetadata...17groupsloaded.
Loadingjournaldescriptors...62descriptorsloaded.
[root@localhosttest]#ls
RECOVERED_FILES
[root@localhosttest]#lsRECOVERED_FILES/
file.12
[root@localhosttest]#diff/etc/passwdRECOVERED_FILES/file.12
#没有任何输出,说明一样
方法二,通过文件名恢复
[root@localhosttest]#extundelete/dev/sdb1--restore-filehosts
NOTICE:
Extendedattributesarenotrestored.
Loadingfilesystemmetadata...17groupsloaded.
Loadingjournaldescriptors...62descriptorsloaded.
Successfullyrestoredfilehosts
[root@localhosttest]#lsRECOVERED_FILES/
file.12hosts
[root@localhosttest]#catRECOVERED_FILES/hosts
127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
:
:
1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
方法三:
恢复某个目录,如目录a下的所有文件:
[root@xuegod63test]#extundelete/dev/sdb1--restore-directorya
[root@localhosttest]#tree
.
└──RECOVERED_FILES
├──a
│ ├──a.txt
│ └──b
│ └──a.txt
├──file.12
└──hosts
3directories,4files
对比一开始创建的目录结构
[root@localhost~]#tree/tmp/sdb1/
/tmp/sdb1/
├──a
│ ├──a.txt
│ └──b
│ ├──a.txt
│ ├──c#空目录
│ └──kong.txt#空目录
├──hosts
├──lost+found
└──passwd
说明:
空文件或文件夹是不能恢复
方法四:
恢复所有的文件
[root@xuegod63test]#extundelete/dev/sdb1--restore-all
[root@xuegod64~]#treeRECOVERED_FILES/
RECOVERED_FILES/
├──a
│ ├──a.txt
│ ├──a.txt.v1
│ └──b
│ ├──a.txt
│ └──a.txt.v1
├──file.12
├──hosts
├──hosts.v1
└──passwd
2directories,8files
总结:
方法1:
通过inode结点恢复--restore-inode
方法二:
通过文件名恢复--restore-file
方法三:
恢复某个目录,如目录a下的所有文件:
--restore-directory
方法四:
恢复所有的文件--restore-all
Cd讲课风格知识的深度1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 删除 文件 恢复 分析