削除されたファイルを回復/元に戻すコマンドはありますrm
か?
$ rm -rf /path/to/myfile
どうすれば回復できmyfile
ますか?そのようなツールがある場合、どのように使用できますか?
削除されたファイルを回復/元に戻すコマンドはありますrm
か?
$ rm -rf /path/to/myfile
どうすれば回復できmyfile
ますか?そのようなツールがある場合、どのように使用できますか?
回答:
コメントで誰かが提供したリンクは、おそらくあなたの最高のチャンスです。
少し威圧的に見えますが、この記事は実際にはかなり簡単です。一般に、手順は次のとおりです。
debugfsを使用してファイルシステムログを表示する
$ debugfs -w /dev/mapper/wks01-root
debugfsプロンプトで
debugfs: lsdel
サンプル出力
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
debugfsでコマンドを実行します
debugfs: logdump -i <7536655>
ファイルのiノードを決定する
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
上記のiノード情報を使用して、次のコマンドを実行します
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
ファイルはに復元されましたrecovered.file.001
。
上記があなたのためではない場合、私はphotorec
過去にファイルを回復するなどのツールを使用しましたが、それは画像ファイル専用です。次のタイトルのこの記事のブログで、この方法について広範囲に書きました。
Fedora / CentOS / RHEL上のデジタルカメラのSDDカードから破損したjpegおよびmovファイルを回復する方法。
debugfs -w /dev/sdb2
が、lsdel
次の0 deleted inodes found.
extundelete
ext3 / 4では使用が簡単で、おそらく同じ結果になります。
/dev/mapper/wks01-root: No such file or directory while opening filesystem
どこでこれを手に入れた/dev/mapper/wks01-root
から?
少しのチャンスがあれば、このスクリプトまたは答えの次の解決策で削除されたファイルを回復できる場合があります:
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
別の便利なトリックがあります:削除されたファイルのパターンがわかっている場合は、alt+ sys+ resuoを入力して読み取り専用で再起動+再マウントし、ライブCDを使用grep
してハードドライブで検索します:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
次に、/tmp/recover
以前のファイルのみを保持するように編集します。
ちょっと、Unixの哲学ですべてがファイルであるなら、それを利用する時が来た、そうではない?
grep
ベースのソリューションは非常に賢く、ファイルシステムがまだマウントされていても私のために働きました。ありがとう!
grep -av "[^[:print:]]"
grep
私がやった:解決策は、変更と私のために働いたsudo grep --line-buffered -ab "$PATTERN" /dev/sda1 | tee lines
と(のようなバイトオフセットを持って123123123:line\n456456456:another\n...
いた、その後、)n=1000; sudo dd of=before if=/dev/sda1 ibs=1 skip=$[123123123-$n] count=$n
とn=1000; sudo dd of=after if=/dev/sda1 ibs=1 skip=123123123 count=$n
異なるとn
値。
私のために働いたのは、アーチによって与えられました(テキストファイルにのみ適用されます):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
/dev/sdXN
失われたファイルを含むパーティションはどこmount
ですか(不明な場合は確認してください)。
少し時間がかかりますが、まだコミットしていないソースコードを誤って削除したときに機能しました。
rm data/*.json python myFile.py
代わりにrm data/*.json && python myFile.py
/dev/sdXN
はファイルシステム用ですよね?私と一緒に見つけたdf -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep: conflicting matchers specified
先週も同じ問題があり、debugfs、photorec、ext3grep、extundeleteなどの多くのプログラムを試しました。ext3grepは、ファイルを回復するのに最適なプログラムでした。構文は非常に簡単です。
ext3grep image.img --restore-all
または:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
このビデオは、役立つチュートリアルです。
del
代わりにrm
、削除する代わりに使用することもできます:
http://fex.belwue.de/fstools/del.html
del
元に戻す機能があり、任意のファイルシステムで動作します。
もちろん、「囚人を連れて行かない」rmでファイルを既に削除している場合、それは解決策ではありません:-}
del
コマンドを導入してくれてありがとう。
外部インターフェースを介してドライブを接続します
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
詳細については、このリンクを参照してください。extundeleteを使用して、ext4で削除されたばかりのファイルの削除を取り消します。
回復ツール-コマンドライン:
回復ツール-Gui:
情報:
私の経験では、ufs-explorerとphotorecを使用してデータを取得しています
(1)=オープンソースではなく、無料ではない
(2)=オープンソースではなく、無料
(3)=オープンソースで無料
(4)= ntfsをサポートする
(5)=ディレクトリ構造機能を備えている
私はそれが不可能であり、非常に非常に困難であることに同意しません。
ファイルが削除されても、実際には削除されません。起こることは、それらがハードドライブ上にあったスペースがリセットのようなものであるため、コンピューターがそこにデータを書き込もうとしても、何も文句を言わないことです。通常、削除したと思われるハードドライブ上のデータは、ほぼ1年後に存在する可能性があります。または、少なくとも、これはWindowsマシンでの私の経験です。Linuxのコマンドラインから同じように機能するかどうかはわかりませんが、そのようなパーティションを開くには別のLive CDが必要になる可能性があります。また、ファイルがまだ存在するという保証もありません。Zero Assumption Recoveryを使用して、Windows XPでこれを数回行いました。よく見ると似たようなツールがあるはずです。
ファイルを削除すると、そのファイルのiノードテーブル内のリンクカウントが1つ減ります。Unixでは、リンクカウントが0に低下すると、そのファイルのデータブロックは空きとしてマークされ、通常、それらのデータブロックへの参照は失われます。@fedorquiのコメントから、これらのブロックにアクセスする方法があるかもしれないが、それはext3ファイルシステムにのみ適用できることを発見しました。
ファイルを保存する1つの方法は、ファイルをゴミ箱領域に移動して($HOME/.trash
必要に応じて)必要なファイルをそこから回復できる関数を記述することです。この関数はにエイリアスできますrm
。cronジョブをスケジュールして、特定の日数の間ごみ箱にあったファイルを削除できます。