如果您未按Shift键,则可以在垃圾箱中找到已删除文件的Windows ,
rm -f
在linux中删除的文件呢
如果您未按Shift键,则可以在垃圾箱中找到已删除文件的Windows ,
rm -f
在linux中删除的文件呢
Answers:
要记住的第一件事是-停止在文件系统上进行任何进一步的写活动。
然后,您可以尝试使用一些工具来查看文件系统,并尝试在已删除的节点中查找数据。' extundelete
'是sourceforge的一种这样的工具。
extundelete是一个实用程序,可以从ext3或ext4分区中恢复已删除的文件。ext3文件系统是使用Linux时最常见的文件系统,而ext4是其继任者。extundelete使用存储在分区日志中的信息来尝试恢复已从分区中删除的文件。无法保证任何特定文件都将无法删除,因此请务必尝试建立一个良好的备份系统,或者在恢复文件后至少放置一个备份系统!
由于undelete_ext3似乎不见了,这里是一个不起眼的bash脚本,它帮助我恢复了一些使用extundelete或debugfs无法获得的文件。解决方案共享。
您可以预先设定要查看的块列表,请参见PRESEED。每行占用一个块号。如果您不假装,将搜索所有块,这是默认设置。
由于您可能会有不同的用例,因此这可能会为您提供一个框架来作为您自己过滤的基础。寻找其他文件类型时,您肯定需要调整值。
样本调用: ./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, i.e. 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
rm
取消与文件关联的索引节点的链接。