恢复条件
众所不一定周知,在系统上删除的文件并不会真正的删除,只是把指向该文件的索引给删除了,当你再次写入数据时,会占用该文件的存储空间。此时,你的文件才是彻底被删除了。所以,只要你在删除文件之后,不进行大量写入操作(文件上传),并且在磁盘分区中找到该文件的原始数据,那么就可以进行文件恢复。
使用以下方法的前提是文件挂载的目录存储类型为ext4
步骤
-
首先找到原文件存储路径,可以使用
pwd
查看当前目录的路径,然后使用df查看所属系统分区
-
然后使用系统自带的还原工具
debugfs
来修复,并运行下列指令来查找被删除文件的ID(open后面为你的分区名,ls -d 后面是你的路径名),然后再利用执行logdump -i <id>
得到以下信息,block和offset的信息一定要记住,然后quit退出debugfs
-
使用以下命令
dd if=/dev/vda1 of=/home/test/test.zip bs=3145797count=1 skip=256
进行文件恢复,其中bs是block的值,skip是offset的值
拓展 :
dd
命令后可以跟的参数及含义
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。