あなたがシフトを押さなかった場合、削除されたファイルされたウィンドウでゴミ箱に見つけることができます、
rm -f
Linuxで削除されたファイルはどうですか
あなたがシフトを押さなかった場合、削除されたファイルされたウィンドウでゴミ箱に見つけることができます、
rm -f
Linuxで削除されたファイルはどうですか
回答:
最初に覚えておかなければならないのは、ファイルシステムでそれ以上の書き込みアクティビティを行わないようにすることです。
次に、ファイルシステムを調べ、削除されたノード内のデータを検索するいくつかのツールを試すことができます。' extundelete
'はsourceforgeでのそのようなツールの1つです。
extundeleteは、ext3またはext4パーティションから削除されたファイルを回復できるユーティリティです。Linuxを使用する場合、ext3ファイルシステムは最も一般的なファイルシステムであり、ext4はその後継です。extundeleteは、パーティションのジャーナルに格納されている情報を使用して、パーティションから削除されたファイルの回復を試みます。特定のファイルを元に戻すことができるという保証はありません。そのため、常に適切なバックアップシステムを用意するか、ファイルを回復した後で少なくとも1つは設置してください。
最初のステップは、ルートドライブに使用されているファイルシステムの削除取り消しツールを試すことです。
前述のように、ext3grepとextundeleteはextファイルシステムファミリのツールです。
回復しようとしているファイルの種類に応じた別のオプションは、ドライブでファイルカーバーを実行することです。これは、上記のユーティリティよりも時間がかかります。
何よりも、私はこのために使用されてきた一つの選択肢です。
最後のオプションは、たまたまファイル内の特定の文字列を知っている場合、ドライブを16進エディタで開いてその文字列を検索することです。
設定によっては、ウィンドウマネージャーがごみ箱やゴミ箱を提供している場合があります。
結局のところ、適切なバックアップシステムをセットアップすることに勝るものはありません。あなたがそれに触れずにそれを設定することなくその仕事をするものを見つけ、それをセットアップします。長い目で見れば、時間、トラブル、苦痛を大幅に軽減できます。
undelete_ext3がなくなったように見えるので、ここに控えめなbashスクリプトがあります。これは、extundeleteまたはdebugfsを使用して取得できなかったいくつかのファイルを復元するのに役立ちました。ソリューションを共有しました。
確認するブロックのリストをプレシードすることができます。「プレシード」を参照してください。1行に1つのブロック番号が必要です。シードしない場合は、すべてのブロックが検索されます(デフォルト)。
おそらく別のユースケースになるので、これにより、独自のフィルタリングのベースとなるフレームが提供される可能性があります。他のファイルタイプを探すときは、必ず値を微調整する必要があります。
呼び出し例: ./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
ファイルに関連付けられているiノードのリンクを解除します。