誤って、rm
削除したくないファイルを使用しました。Linuxで元に戻す方法はありますか?
誤って、rm
削除したくないファイルを使用しました。Linuxで元に戻す方法はありますか?
回答:
以下は、テキストファイルを回復する一般的な手順です。
最初にwallコマンドを使用して、システムがシングルユーザーモードでダウンしていることをユーザーに伝えます。
# wall
System is going down to .... please save your work.
Ctrlキーを押しながらDキーを押してメッセージを送信します。
次に、init 1コマンドを使用して、システムをシングルユーザーモードにします。
# init 1
grep(従来のUNIXの方法)を使用してファイルを回復する
次のgrep構文を使用します。
grep -b 'search-text' /dev/partition > file.txt
または
grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
どこ、
-i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
-a : Process a binary file as if it were text
-B Print number lines/size of leading context before matching lines.
-A: Print number lines/size of trailing context after matching lines.
/ dev / sda1の「nixCraft」という単語で始まるテキストファイルを復元するには、次のコマンドを試してください。
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
次に、viを使用してfile.txtを表示します。
このメソッドは、削除されたファイルがテキストファイルである場合にのみ役立ちます。ext2ファイルシステムを使用している場合は、recoverコマンドを試してください。
で発見http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
、を除くすべてのシステムデーモンを手動で強制終了しますsshd
。また、この時点で、すべてのファイルシステムROを再マウントし、tmpfsに保存して(一時ファイルがRAMに収まると仮定して)、一時データでファイルを上書きしないようにする必要があると思います。もちろん、後でリモートサーバーにコピーするか、RWを再マウントしてからローカルファイルシステムにコピーする必要があります。
dd
見つけようとします(grep
、またはエディターを使用)。編集:時々ddrescue
よりもうまく動作しますdd
。
唯一の正しい答えは、バックアップからファイルを復元することです。誰もがバックアップが必要です。本当に重要なファイルについては、2つのバックアップが必要です。しませんか?さて、あまりにも悪い、学んだ教訓はここにあります(耳障りに聞こえますが、私はデータストレージに携わっています。重要なデータを失うまで人々はバックアップしません。それは確かに事実です。他のほぼ全員も同様です)。
OK、バックアップはありません。ファイルRIGHT NOWを含むファイルシステムの使用を停止する必要があります。書き込みアクティビティは、ディスク上に残る可能性がある(のみ可能性がある)ファイルデータを確実に消費します。
ルートファイルシステムと/ homeの両方として1つのパーティションのみを使用するという悲劇的なエラーを起こした場合、他のデバイスから起動する必要があります。今。
ファイルが一般的な形式(Wordファイル、JPGなど)の場合、Photorecを使用します。Photorecは、最も一般的なファイル形式を取得できます。
以前に提案された「ext3 undelete」メソッドを試すことができますが、コマンドラインに慣れ、基本的なLinuxの内部動作などを理解する必要があります。
ファイルが特別な形式である場合、運が悪い。ドライブをスキャンしていくつかの特別なファイルを探すPerlプログラムを書いたことがありますが、かなりうまくいきました。ただし、そのためにはプログラミングを知っておく必要があり、Linuxでも非常に安心します。
数年前にこれをやった。私のアプローチは、パーティションを直接マウントし、失う時間をなくし、パーティションをアンマウントしてから、
dd if=/dev/hda1 of=backup_image.ext3
パーティションの正確な状態のバックアップファイルを作成します。その後、パーティションを再度マウントし、作成したイメージで削除されたファイルを検索しながら、通常どおりビジネスを続行できます。すべての「空の」スペースが必要なため、画像はおそらく非常に大きくなります。そのため、画像を保存することは実用的な問題になる可能性があります。
それから、パーティションコンテンツのスープのどこかにいると予想したテキストスニペットの後に退屈な検索を実行するだけでした。例えば、.tex-ファイルを見つけるために、私は走りました
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
「サブセクション」というフレーズの周りに大きなコンテキストを出力し、出力をファイルに保存して、手動で検索できるようにしました。画像を検索するのに非常に長い時間がかかったため、必要以上に何度も実行したくないため、非常に大きなコンテキストを印刷しました。
また、このコマンドstrings
は出力からバイナリガベージを削除するのに役立ちましたが、正しく思い出せば、すべての改行も削除され、問題になる可能性があります。
同じ方法でバイナリファイルを見つけるには、特徴的なヘッダーまたは特定のファイルの何かを見つけることに成功するかもしれませんが、それはかなり大きな冒険だと思います。
簡単なテクニカルノート:ディスクの回復とExt3 / 4には技術的な問題があります。説明するのは長いですが、簡単に(そして不適切に):Ext3 / 4は、ファイルを削除するときにディスク上のファイルの場所をOSに伝える「マーカー」を削除します。ファイルはスクラブされませんが、ディスク上のどこで開始および終了するかは誰にもわかりません。また、いくつかの場所で断片化されることさえあります。他の一部のファイルシステムは、ファイルのステータスを「削除済み」に設定するだけですが、位置データは保持します。削除を取り消すことは、このフラグを使用してファイルポインタを調べることより難しくはありません(あまり多くのアクティビティが発生していなければ、ファイルポインタは引き続き使用可能である必要があります)。
何がベストですか?私の見解では、修辞的です。頻繁なバックアップは、これらすべての問題に対する答えです。自動化されたバックアップシステムなしの重要なデータは、私見である。
必須の個人的な逸話:から削除しようとしていfoo\ foo*
ました~
。私が書いた
rm -r foo<Tab>*
悲しいことに、foo
どうやらこれはシンボリックリンクであり、これに一致する唯一のファイルであったため、シェルは
rm -r foo\ foo *
Enterキーを押して、コマンドを見てそこに座りました。rm
「書き込み保護されたファイル「何か」を削除しますか」と少し長い時間尋ねられた後、すぐに悪寒を感じ、柔らかく非常に制御されたを押しましたCtrl+c
。〜私の半分~
は削除されましたが、上記のgreppingと多少の現在のバックアップを通して価値のあるものすべてを取り戻すことができました。個人的に非常に貴重な(読み取り:時間のかかる)ディスク上の非常に最近の測定データが失われましたが、4回のバックアップを作成しました。1つはここで消え、もう1つは学校でのシステム停止のため、もう1つは破損しており、最初は4つ目を見つけることができませんでした。していなかったrm -r
書き込み保護されたファイルで立ち往生し、そのフォルダがmyのsshfs経由でマウントされてから4番目が食べられていたでしょう~
。それ以来、私はそのようなことについてもっと注意を払っています。
それが標準のrmである場合、バックアップがあることを望みます。削除されたファイルを回復する手順は、ファイルシステムごとに異なる場合があります(実行できる場合)。Linuxには組み込みの「ごみ箱」がありません。ファイルを削除すると、すべてが消えてしまいます。
いずれにせよ、コンピューターのプラグを抜いてください-できるだけ早くコンピューターを実行し続ける(シャットダウンすることもある)ため、ディスクへの書き込みが発生し、以前に一部のブロックが占有していた可能性が高くなりますファイルは上書きされます。それが完了したら、別のコンピューターに入れて、ライブCDから再起動するか(読み取り専用でマウントしない限り、ドライブをマウントしないようにしてください)、ハードドライブを取り外してデータリカバリの専門家に渡してください。
期待を低く設定します。「削除された」データに何かが書き込まれた場合、それは失われます。
私は少量の回復を行いましたが、特定のフォーマット向けに設計された最良のツールがしばしば見つかりました。たとえば、「photorec」は、数万個のjpegを回復させたいときに優れていました。
Recuvaは今も私を助けてくれて、あなたの最良の選択かもしれません。(無料です。広告でだまされて支払わないでください)
1日の終わりに、失ったものが重要な場合は、ドライブをオフラインにして書き込みを停止します。データを取り戻すか、価値がなくなるまで、見つけることができるすべての回復ソフトウェアを使用してください。本当に重要な場合は、高い価格で専門家に送ってください。
以前にツールを使用したことがある場合は、使い慣れたツールをもう一度試してください。結局のところ、彼らはディスクに書き込むべきではないので、動作するものが見つかるまでソフトウェアを使用できます。
ここにあなたのための素晴らしいドキュメントがあります。実用的なヒントがたくさんあります。
ところで、人々の2つのグループがあります。
おめでとう、あなたは自分自身をグループ2に昇格させた。;-)
VLCやLibreOfficeなど、現在ファイルを読み込んでいるアプリケーションを開いている場合、このすごいL&U.SOの回答がこの混乱を助けてくれました。これを行うための代替方法を次に示します。
一般的な考え方は、リンクを見つけ/proc/PID/fd/DESCRIPTOR_NUMBER
て、元の場所にコピーして戻すことです。を使用ps aux | grep APP_NAME
してPIDを見つけ、次にls -la /proc/PID/fd/
適切なDESCRIPTOR_NUMBERを見つけます。
「正しい」答えは、確実に回復する方法がなく、代わりにバックアップまたはクローンシステムから復元するか、再インストールする方法がないと仮定することです。
TestDiskは優れたツールであり、ファイルシステムと削除の新しさに応じて物理ドライブから一部のデータを回収できる方法は他にもありますが、時間と痛みが大きすぎるため、バックアップを保持(およびテストそれらが有効で復元可能であること)!
このスクリプトを試すことができます。うまく機能し、現在ではrmとimの代わりに広く使用することを意図しています。
https://github.com/nateshmbhat/safe-rm
rm
先週同じ問題が発生し、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’
このビデオショーはあなたを助けることができるミニチュートリアルです。
rm
は、「危険な」UNIX / Linuxコマンドです(読み取り$ man rm
)。細心の注意を払って使用してください。そうは言っても、確実なファイルを簡単に削除する方法です。最新のLinuxおよびUnixデスクトップ環境では、「ごみ箱」のソリューションが提供されているため、ユーザーは誤って削除したファイルを簡単に回復できます。