是否有可能恢复由Linux在rm中删除的文件?

在Windows提交删除可以find垃圾如果你没有按shift

那么在linuxrm -f删除的文件呢?

首先要记住的是 – 停止在文件系统上进一步写入活动。

然后你可以尝试一些工具来查看文件系统,并尝试在被删除的节点中定位数据。 ' extundelete '就是sourceforge的一个工具。

extundelete是一个实用程序,可以从ext3ext4分区恢复已删除的文件。 ext3文件系统是使用Linux时最常用的文件系统,而ext4是其后继者。 extundelete使用存储在分区日志中的信息来尝试恢复已从分区中删除的文件。 不能保证任何特定的文件都能被取消删除,所以一定要有一个好的备份系统,或者在恢复文件后至less放一个。

第一步是尝试一个用于根驱动器的文件系统的取消删除工具。

如前所述,ext3grep和extundelete是ext文件系统系列的工具。

另一个选项取决于试图恢复的文件types是在驱动器上运行一个文件雕刻器。 这将花费比上述实用程序更长的时间。

最重要的是我用这个选项。

如果碰巧知道文件中的某个string,最后一个选项是在hex编辑器中打开驱动器并search该string。

根据您的设置,您的窗口pipe理器可能会提供回收站/垃圾箱。

在一天结束的时候,绝对不可能有一个好的备份系统设置。 find一个能够完成工作的人,而不必触摸它并设置它。 从长远来看,你会节省很多时间,麻烦和痛苦。

我会试试这个,ext3grep:
http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html
开始之前,您必须先卸载分区。

HTH

由于undelete_ext3似乎消失了,这里是一个谦虚的bash脚本,帮助我恢复一些使用extundeletedebugfs无法获得的文件。 解决scheme共享

您可以预先查看块的列表,请参阅PRESEED。 每行占用一个块号。 如果你不预先设定,所有的块将被search,默认。

  • 对于每个块,首先检测gzip内容的字节。
  • 如果成功的话,这个块将被用gunzip来进一步探测字节257处的“ustar”string,并标记一个tar归档文件。
  • 最后,提取与文件模式匹配的数据(使用tar的通配符选项的后缀path样式),并为特定的string进行grep。 请参阅variablesFILE_IN_TARFIT_CONTENT
  • 如果find,请保存该文件。

因为你可能会有不同的使用情况,这可能会给你一个框架来build立你自己的过滤。 在查找其他文件types时,您肯定需要调整值。

示例调用: ./ext-undelete-tar-gz.sh devimage found_files/

 #!/bin/bash # Brute force (linear) search specific tar files with # certain contents on ext2 / ext3 / ext4 devices or files # # .. this is a last resort if extundelete and/or debugfs # did not find what you were looking for and limited # in that recoverable data must not have been stored # in fragments, ie non-sequentially [[ -n "$2" ]] || { echo "usage: $0 [ device | imagefile ] "\ "[ destdir_for_recovered_data ] "\ "[ max_blocks_to_search (optional) ]" exit 1 } IMG=$1 DEST=$2 TMP=/dev/shm/cand.tmp PRESEED=/dev/shm/cand.list GZMAGIC=$(echo -e "\x1f\x8b\x08") TARMAGIC=$(echo -e "ustar") # max bytes to read into $TMP when a .tar.gz has been found LEN=$((160*1024)) # pick $TMP for recovery based on matched strings.. FILE_IN_TAR="debian/rules" # ..in the tar index (suffix-search) FIT_CONTENT="link-doc=" # ..within FILE_IN_TAR matches # determine FS parameters BLOCKS=$(tune2fs -l $IMG | grep -Po "(?<=^Block count:).*" | xargs) BS=$(tune2fs -l $IMG | grep -Po "(?<=^Block size:).*" | xargs) LEN=$((LEN/BS)) function _dd { dd $@ 2>/dev/null ; } function _gunzip { gunzip $@ 2>/dev/null ; } function _tar { tar $@ 2>/dev/null ; } function inspect_block { bnum=$1 if _dd if="$IMG" skip=$bnum bs=$BS count=1 | tee "$TMP" \ | _dd bs=1 count=3 \ | grep -qF "$GZMAGIC" then if _gunzip -c "$TMP" \ | _dd bs=1 count=5 skip=257 \ | grep -qF "$TARMAGIC" then _dd if="$IMG" skip=$((bnum+1)) bs=$BS count=$((LEN-1)) >> "$TMP" echo -n found $bnum.tar.gz if _tar xzf "$TMP" -O --wildcards *"$FILE_IN_TAR" \ | grep -qF "$FIT_CONTENT" then echo " ..picked, stripping trailing garbage:" exec 3>&1 gunzip -c "$TMP" 2>&3 | gzip > $DEST/$bnum.tar.gz exec 3>&- else echo fi fi fi echo -ne "$((bnum+1)) / $BLOCKS done.\r" >&2 } if [[ -f "$PRESEED" ]] then while read bnum do inspect_block $bnum done <"$PRESEED" else for (( bnum = 0 ; bnum < ${3:-$BLOCKS} ; bnum++ )) do inspect_block $bnum done fi | gzip >"$PRESEED.log.gz" echo 
  • 尽快注意到错误的删除后,停止使用文件系统。
  • 这个脚本可能会在大文件上失败,它不会parsing文件系统的更高级别的结构。
  • 基本上,现代文件系统不能强大地恢复未链接的数据,所以不能保证恢复丢失的数据。
  • 在文件系统的备份映像上运行。