手贱rm -rf /path/之后,可以这样来

How to recover files I deleted now by running rm *? [duplicate]

This question already has an answer here:
Recovering accidentally deleted files 7 answers
By mistake I ran rm * on the current directory where I created many c program files. I had been working on these since morning. Now I can‘t take out again the time that I spent since morning on creating the files. Please say how to recover. They aren‘t in recycle bin also!

ubuntu rm data-recovery
shareimprove this question
edited Feb 21 ‘14 at 0:33

Braiam
13.9k73778 
asked Nov 15 ‘13 at 8:56

Ravi
61841334
marked as duplicate by Anthon, jasonwryan, slm?, Bernhard, rahmu Nov 15 ‘13 at 22:53

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2     
Linux/Unix doesn‘t forgive :) – Jiri Xichtkniha Nov 15 ‘13 at 9:07
4     
Checkout them from the version control system you use. You use one, right? – choroba Nov 15 ‘13 at 9:08
2     
There are SOME ways to recover files/data. But most of them is very hard to do. Be sure you don‘t write any more to the disk or you are doomed completely. – Jiri Xichtkniha Nov 15 ‘13 at 9:12 
1     
When I did this, when I was young, it was not as bad as I thought. This is how I discovered that most of the time taken to write is in thinking. The second time around there will be less thinking, and you may even improve it. – richard Nov 15 ‘13 at 9:13
2     
Unmount the file system ASAP to avoid the blocks previously allocated for the deleted files from being overwritten. Assuming the underlying file system is either ext3 or ext4, you might have some luck recovering files using extundelete. – Thomas Nyman Nov 15 ‘13 at 9:14 
show 9 more comments
2 Answers
activeoldestvotes
up vote
13
down vote
If a running program still has the deleted file open, you can recover the file through the open file descriptor in /proc/[pid]/fd/[num]. To determine if this is the case, you can attempt the following:

$ lsof | grep "/path/to/file"
If the above gives output of the form:

progname 5383 user 22r REG 8,1 16791251 265368 /path/to/file               
take note of the PID in the second column, and the file descriptor number in the fourth column. Using this information you can recover the file by issuing the command:

$ cp /proc/5383/fd/22 /path/to/restored/file
If you‘re not able to find the file with lsof, you should immediately remount the file system which housed the file read-only:

$ mount -o remount,ro /dev/[partition]
or unmount the file system altogether:

$ umount /dev/[partition]
The reason for this is that as soon as the file has been unlinked, and there are no remaining hard links to the file in question, the underlying file system may free the blocks previously allocated for the deleted file, at which point the blocks may be allocated to another file and their contents overwritten. Ceasing any further writes to the file system is therefore time critical if any recovery is to be possible. If the file system is the root file system or cannot be made read-only or unmounted for some other reason, it might be necessary to shutdown the system (if possible) and continue the recovery from a live environment where you can leave the target file system read-only.

After writes to the file system have been prevented, there is no immediate hurry to attempt the actual recovery. To play it safe, you might want to make a backup of the file system to perform the actual recovery on:

$ dd bs=4M if=/dev/[partition] of=/path/to/backup
The next steps now depend on the file system type. Assuming a typical Ubuntu installation, you most likely have a ext3 or ext4 file system. In this case, you may attempt recovery using extundelete. Recovery may be attempted safely on either the backup, or the raw device, as long as it is not mounted (or it is mounted read-only). DO NOT ATTEMPT RECOVERY FROM A LIVE FILE SYSTEM. This will most likely bring the file system to an inconsistent state.

extundelete will attempt restore any files it finds to a subdirectory of the current directory named RECOVERED_FILES. Typical usage to restore all deleted files from a backup would be:

$ extundelete /path/to/backup --restore-all

另外参考解决办法原文出处的样子:http://extundelete.sourceforge.net/

时间: 2024-12-21 12:48:23

手贱rm -rf /path/之后,可以这样来的相关文章

rm -rf 删除文件恢复

一.extundelete安装 1.安装依赖包 # yum install e2fsprogs* -y 2.下载并安装extundelete # wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 # tar -jxvf extundelete-0.2.4.tar.bz2 # cd extundelete-0.2.4 # ./configure --

Linux记录- Linux下限制rm -rf /

操作说明: 为了防止在linux下执行操作的时候误操作rm -rf /,或者rm -rf 一些比较重要的目录,我们做以下操作来限制rm的删除 1.下载源码安装包 https://raw.githubusercontent.com/bazingafraser/cv/master/article/rm/safe-rm-0.12.tar.gz 2.具体操作如下 [root@i-ekowjial ~] tar -xvzf safe-rm-0.12.tar.gz [root@i-ekowjial ~] c

webstorm 不知道手贱点了什么,有时候会自动删除分号

https://segmentfault.com/q/1010000009184137?_ea=1845711 webstorm 不知道手贱点了什么,有时候会自动删除分号 webstorm javascript 繁忙的耗子 4月25日提问 关注 4 关注 收藏 0 收藏,470 浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地 怎么恢复过来? 4月25日提问 评论 邀请回答 编辑 默认排序时间排序 3个回答 答案对人有帮助,有参考价值0答案没帮助,是错

find ./ -name *.bak | xargs rm -rf

##################################################################################################### #find ... -exec rm {} \; 可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exec选项,这样当文件数量较多的时候,就可能会出现"参数太多"之类的错误. -exec   必须由一个   ;   结束,而因为通常   shel

rm -rf误删文件的恢复(extundelete工具的使用)

实战:extundelete恢复数据的过程 在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区,如果是系统根分区的数据遭到误删除,就需要将系统进入单用户,并且将根分区以只读模式挂载.这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回力无天.所以,以只读模式挂载磁盘可以尽量降低数据块

rm -rf / 好屌!

我真的做了这个实验,结果是,系统彻底坏了.. 不管怎样,总算体验了一把- $sudo rm -rf / --no-preserve-root 执行命令: 执行中: 执行结束,系统彻底用不了了: 谢谢虚拟机^_^ 其实,我搜了下,有不少人也做过这个实验,这个 BBGamerUK 还录了像: https://www.youtube.com/watch?v=SIIweirHwek 这里还有一个发了很久的,比较热烈的讨论: http://serverfault.com/questions/587102/

前端js正则的一个实例:过滤“rm -rf /”

最近开发cmdb,有个需求是要求脚本中不能含有"rm -rf /"命令,如果含有这个命令,前端弹出警告框提示. 这里需要用test方法来测试字符串,符合模式时返回true,否则返回false. 我先从控制台调试一下: 可以看到,匹配OK了. 前端代码如下: var re = /rm -rf \/$/;  //匹配"rm -rf /"命令 if (re.test('your commands')) {     alert('您输入的命令含有"rm -rf /

手贱的回忆录 --- L版openrc密码修改(OS_PASSWORD)

---恢复内容开始--- 刚刚部署完L版,发现默认登录的管理员账号在41.42.43的openrc文件中,登录名是admin,登录密码却是一串随机码,于是想修改一个简单易记的密码,手贱的把OS_PASSWORD修改为了Abcd1234,三个API节点都这么搞了一下,然后就杯具了,从此无法登录页面,且没有admin权限做任何补救操作,后经成坤操作,问题被瞬秒,以下为操作过程,供参考: 登录到41节点,打开openrc文件,注销掉Rescue model之上的所有内容,仅留下以下内容: export

使用lsof恢复rm -rf删除后的文件

在Linux系统中使用rm -rf删除文件后,其实文件只是从磁盘中移除,文件内容还是在系统后台等待回收,此时可以使用系统进程号将文件考贝出来,内容不会有更改. 1.删除一个文件 [[email protected] logs]# ll access.log -rw-r--r-- 1 root root 11723908 Jun 14 16:02 access.log[[email protected] logs]# rm -rf access.log 2.查看文件在后台的进程[[email pr