在Windows提交删除可以find垃圾如果你没有按shift ,
那么在linux下rm -f
删除的文件呢?
首先要记住的是 – 停止在文件系统上进一步写入活动。
然后你可以尝试一些工具来查看文件系统,并尝试在被删除的节点中定位数据。 ' extundelete
'就是sourceforge的一个工具。
extundelete是一个实用程序,可以从ext3或ext4分区恢复已删除的文件。 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脚本,帮助我恢复一些使用extundelete或debugfs无法获得的文件。 解决scheme共享
您可以预先查看块的列表,请参阅PRESEED。 每行占用一个块号。 如果你不预先设定,所有的块将被search,默认。
因为你可能会有不同的使用情况,这可能会给你一个框架来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