文档章节

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

NILYANG
 NILYANG
发布于 2015/10/16 23:58
字数 802
阅读 246
收藏 7
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/

本文转载自:http://unix.stackexchange.com/questions/101237/how-to-recover-files-i-deleted-now-by-running-rm

共有 人打赏支持
上一篇: vagrant ssh on windows
下一篇: bash regex example
NILYANG
粉丝 14
博文 100
码字总数 19038
作品 0
杭州
高级程序员
私信 提问
运维请注意:”非常危险“的Linux命令大全

导读 Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险。所以,在输入某些命令前,请多多检查再敲回车。 rm –rf rm –rf是删除文件夹和里面附带内...

linux小陶
2016/12/26
3
0
运维请注意:”非常危险“的Linux命令大全

运维请注意:”非常危险“的Linux命令大全 Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险。所以,在输入某些命令前,请多多检查再敲回车。 rm...

飞侠119
2016/12/08
0
0
Linux Shell脚本生产环境下安全地删除文件

脚本编写背景 无论是生产环境、测试环境还是开发环境,经常需要使用rm命令删除&批量一些“重要”目录下的文件。按照Linux的哲学“小即是美”(一个程序只做一件事)+“用户清楚自己做什么”(...

urey_pp
2017/06/29
0
0
9 个使用前必须再三小心的 Linux 命令

Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹、文件或者路径文件夹等被删除。 在一些情况下,Linux 甚至不会询问你而直接执行命令,导致你丢失各种数据信息。 一...

oschina
2014/11/06
8.7K
45
Linux下9 个使用前必须再三小心的命令

Linux下9 个使用前必须再三小心的命令 孤独求学人2016-10-144 阅读 命令linux Linux Shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹、文件或者路径文件夹等被删除。 在一...

孤独求学人
2016/10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

127.0.0.1 和 0.0.0.0 地址的区别

1. IP地址分类 1.1 IP地址表示 IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。 即: IP-a...

华山猛男
10分钟前
1
0
解决Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.

把 总项目 下的 build.gradle 中的 两个 jcenter() 用 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’} 代替。...

lanyu96
16分钟前
1
0
基于redis的分布式锁

redisson提供了基于redis的分布式锁实现方式,本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法,第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
25分钟前
6
0
CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linux-tao
27分钟前
3
0
设计模式“6”大原则!

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要...

Java干货分享
44分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部