Linux文件误删之后恢复方法
前言
今天不小心把一个文件给误删了,因为不想花半天时间重新写,就查找了一下Linux下恢复文件的方法。
因为是刚删不久,文件实际的数据应该还在
首先查看系统分区
Linux:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 % /
tmpfs % /var/lib/php5
tmpfs % /var/run
tmpfs % /tmp
ssl_service % /kssl/HRP/cache
使用系统自带工具debugfs进行修复
打开删除的文件所在的分区
Linux:~# debugfs
debugfs 1.37 (-Mar-)
debugfs: open /dev/sda1
用ls -d查看刚刚删除的文件所在的目录
如果列表中有我们要找的文件,尖括号<>中是对应的inode号
debugfs: ls -d /root/rand-test
() . () .. () assess
() experiments <> () () data
<> () ..swp () periodtest.sh
<> () .singletest.input.swp () periodtest.input
() singletest.input <> () .periodtest.input.swp
<> () .singletest.input.swp <> () periodtest.input~
查看inode的日志文件
debugfs: logdump -i <180338>
Inode 180338 is at group 176, block 1441809, offset 128
Journal starts at block 3434, transaction 90549
FS block 1441809 logged at sequence 90622, journal block 3950
...
quit退出debugfs,使用dd命令进行恢复,bs为前面得到的offset,skip为前面得到的block
debugfs: quit
Linux:~/rand-test# dd if=/dev/sda1 of=/root/rand-test/periodtest.input~ bs= count= skip=
+ records in
+ records out
bytes transferred in 0.000081 seconds ( bytes/sec)
遗憾的是,我要恢复的文件已经不在了
好在对于文本文件还有另一种方法,使用grep
第一步同样是找到文件所在的分区
然后使用grep对分区进行搜索,只要你记得文档中的某些关键字
grep -a -B -A 'function checkInt() ' /dev/sda1 > tmp.txt
其中-a表示把分区看成文本形式(分区本身是二进制形式的),-B 30 -A 150表示找到搜索的内容就打印前面30行和后面150行
如果分区比较大可能需要一定的搜索时间,完成之后打开tmp.txt,你会发现在一堆乱码中镶嵌着你要恢复的本文
至此,大功告成,总结
使用debugfs的方法适用于所有文件,不过需要inode信息仍然存在。使用grep的方法,只需要实际的block中数据还存在即可恢复,不过只适用于文本文件。
另外,切记rm需谨慎
Linux文件误删之后恢复方法的更多相关文章
- Linux 文件系统错误的修复方法 ddrescue替代dd的恢复软件 备用超级块
Linux 文件系统错误的修复方法 ddrescue替代dd的恢复软件 备用超级块 最近处理的一件 linux 服务器断电导致文件系统启动后文件系统不可读写,数据不可用的案例,现总结下 Linux ...
- 如何彻底删除SVN中的文件和文件夹(附恢复方法)
在SVN中如果删除某个文件或文件夹也可以在历史记录中进行找回,有的时候需要彻底删除某些文件,即不希望通过历史记录进行恢复,需要在服务器上对SVN的数据进行重新整理 这里假设SVN项目的目录为 /dat ...
- 【转】如何彻底删除SVN中的文件和文件夹(附恢复方法)
这里假设SVN项目的目录为 /data/svn/project,我们想排除trunk/test.exe文件和trunk/notallowed/目录,操作步骤如下及执行的svn命令(在svn安装目录的b ...
- Linux文件误删恢复
一.需求研究 分析对比debugfs.testdisk 6.14.extundelete,对比各自官网介绍和操作说明本次决定研究extundelete对文件和目录的恢复操作. 二.项目内容 1.工具安 ...
- git 误删分支恢复方法
在使用Git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...
- 使用ssh 登录Linux 文件上传下载方法
最简单的方法: 安装WinSCP或者Filezilla, 启动该程序,然后自己输入输入主机名.端口.用户名.密码登录,然后在putty里面用pwd命令看看当前目录,再在WinSCP/Filezilla ...
- ctf比赛linux文件监控和恢复shell
之前参加ctf比赛时候临时写的,有很多不足,不过可以用,就贴出来分享给大家,希望对大家有帮助. 脚本一:记录当前目录情况 #!/bin/bashfunction getdir(){ for el ...
- Windows 与 linux文件相互传输的方法
公司里面办公机器大部分都是 windows 但是现在随着云计算.docker.linux等的越来越兴起,需要大量的操作linux服务器. 最重要和最直接的需要将windows 上面的文件上传到 lin ...
- Ubuntu启动文件破坏启动恢复方法
reboot后主机登录显示如下图: 解决步骤: 1.fs0:(回车) 2.edit startup.nsh 3.添加下面字段: fs0: cd EFI/ubuntu grubx64.efi 4.重启即 ...
随机推荐
- Android Studio酷炫插件(一)——自动化快速实现Parcelable接口序列化
https://blog.csdn.net/kroclin/article/details/40902721 一.前言相信数据序列化大家都多多少少有接触到,比如自定义了一个实体类,需要在activit ...
- MySQL 导出用户权限
Version <= 5.6 #!/bin/bash #Function export user privileges source /etc/profile pwd=****** expgra ...
- Spring cloud系列之Zuul配置项中sensitiveHeaders和ignoredHeaders
sensitiveHeaders:会过滤客户端请求中的和该配置项匹配的headers比如: zuul: sensitiveHeaders: X-ABC 如果客户端在发请求是带了X-ABC,那么X-AB ...
- MAC 下 Excel打开UTF-8格式的文件乱码
为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头.这作为一个”特征符”或”字节顺序标记(byte-o ...
- C# 远程传输File文件
/// <summary> /// 向论坛传图片文件 /// </summary> /// <param name="filePath">< ...
- bzoj1452
题解: 二位树状数组 然后我开了300*300*300就T了 代码: #include<bits/stdc++.h> using namespace std; ; ],q; int fin ...
- VSTO:使用C#开发Excel、Word【15】
使用文档属性DocumentProperties集合和DocumentProperty对象位于Microsoft Office 11.0 Object Library(office.dll)中,该对象 ...
- 查看shell 命令 路径
type [root@web01 ~]# type mount mount is /bin/mount which [root@web01 ~]# type ifconfig ifconfig is ...
- ES6和ES5变量声明的区别(var let const)
// es5的语法与es6的语法区别 // var let const console.log(name);//undefine,不会报错,因为变量声明会提到作用域的最前面 var name=&quo ...
- [SQL]Temporal 异常处理经验
解决20762 Module 3 课程关于Temporal Table 在 Demo 时的错误 首先该Demo 主要是搭配AdvantureWorks2016 的资料库,使用Person.Person ...