紹介する
誤ってひどいことをした。ls
代わりに、私が作成したスクリプトの後に表示された数日前、ディレクトリのコピーの代わりに現在のディレクトリにいくつかのコマンドを入力してcd
実行しましたが、期待した効果はありませんでした。rm -rf
mnt
ここにはすでに同様の質問があることを知っていますが、包括的な質問はありません。私はこの「機会」を通じて、後で他の人が参照できるように公に回答を提供するシリーズを始めたいと思います。
photorec
たとえば、使用の提案がありますtestdisk
。これが最善の解決策ではないかもしれません。別の答えを見つけましたが、ここ、推奨されますlocate
。私はそれについて、またはそれがどのように機能するのかわかりません。
私のシステム
私のシステムはテストブランチを追跡するDebian 10システムです。データはext4形式でSSDに保存されます。私が間違った場所にあることに気づいたとき、rm -rf
私はコンピュータの電源ボタンを押してコンピュータをシャットダウンしました。
解決手順
別のDebianシステムを実行している別のノートブックがあります。 SSDをコンピュータから取り出し、外部USB-Sataコネクタに接続しました。
これで、システムがデバイスにデータを書き込めないようにインストールする必要があると思います。どうすればいいですか?
locate
その後、この方法(リンクされた質問)を使用してデータを再インポートできますか?何かをする前に、これが正しいことを確認したいと思います。
データは重要ですか?
はい。私が削除したディレクトリには、私の博士号のすべてのコードが含まれていました。まだ数週間が残っています。ここ数週間で行われたすべてのタスクを使用して再実装できる古いバージョンがあります。しかし、その短い時間の間私はたくさん変わった。今週、私の研究で「画期的」がありました。コードの書き方は、コードの再実装が決して単純ではないことを意味します。
バックアップはありますか? (編集する)
私が間違いなく知っている唯一のことは、私が所有しているサーバーに日付があることです2 May 2020
。私はほぼ24時間働いているので、それ以来多くのことをしてきました。
そこ可能このSSDには別のバックアップがありますが、その一部は私のホームディレクトリにあり、そのバックアップが削除され、rm -rf
バックアップスクリプトが期待どおりに機能しないため、そこに通常のバックアップがない可能性があります。 (コピーされる不思議なものを削除しようとすると、やっと詰まってしまいました。)
現在の日付を確認するためにSSDにアクセスできません。データを書き込めないように(可能であれば)インストールする方法を知っておく必要があります。
5月2日のものだけ持っていたら本当に悪かったでしょう。私は最近数時間狂ったように働いてきたので、おそらく今朝起きて誤ってそれを台無しにしたようです。
答え1
考慮すべき事項は次のとおりです。
まず、ディスク全体のコピーを作成します。ディスク自体ではなく、
dd if=/dev/sdX of=image.img bs=1M status=progress
このコピー(たとえば)を処理します。photorec image.img
私の(長期)経験として見ると、多くのファイル形式よりも優れています
foremost
。photorec
ファイルの種類に応じて、カスタムファイルヘッダーをに追加することを検討することもできますforemost
。これは過去に私にとって大きな助けになりました。私の答えでparamount / photorecに関する追加情報こここれ私の答えは、修復された干し草の山で利用可能なファイルを見つけるのに役立ちます。
SSDをインストールしないでください。コメントですでに指摘したように、読み取り専用でマウントするだけでは、上書きを防ぐのに必ずしも十分ではないかもしれません。画像を処理します
dd
。
さて、私はしばらく前に学びましたが、実際にあなたに役立つ(興味深い)コツがあります。
私が削除したディレクトリには、私の博士号のすべてのコードが含まれていました。
だからこれはテキストです。これで、ほとんどのコードが1つ(またはいくつかの)ファイルにある場合は、実際に次のことを試すことができます。
grep -ai '<this text is in my newest code revision>' image.img
私はこれがとても簡単に聞こえることを知っていますが、私は以前同じ状況で私を救ってくれました。一致する行の上下に行を-C x
含める(数字で置き換える)には、コマンドに追加する必要があります。x
ファイルが部分的に破損している可能性があります。さまざまなモードをお試しください。多くの単語から始めて、正確に一致する単語を見つけてください。結果がない場合は、少ない単語で試してください。
必須事項もあります...常にバックアップしてください。同じドライブにはありません。バックアップを確認してください。数百ギガバイトではないと思われるテキストを扱っているので、クラウドバックアップ(もちろん暗号化)などを設定することもできます。
もう一つのアドバイス:コードを書き換えるよりも時間を費やさないでください。落ち着くことができることを試して、私のgrep
方法が役立つことを確認してください。一日中使用しても結果が出ない場合は、最善の解決策はおそらく最新のバックアップを受け取り、そこで再度作業することです。
答え2
答えの始まり
photorec
いくつかのデータを回復するためにユーティリティスイートを使用しましたtestdisk
。
私が試したことのリスト
- Debian 10ノートブックブート(スタンドアロンマシン)
- USB経由でSSDをSATAコントローラに接続します(悪い考えです!)
- ディスクが自動的にマウントされます(これを防ぐ方法がわかりません)。
- ddを使用したバックアップ用のデータコピーの開始
- スペースが足りません
- dd ジョブがキャンセルされました。
- まず、データをddコピーする方が良いかもしれませんが、どうすればいいのかわかりません。
- 問題:ディスクサイズが1TBで、確認する前に1TBをすべてコピーする必要があります。 (おそらく?ゼロ化ブロックを無視できますか?)
photorec
- 内部SSD(ノートブック)のみ500GB
- 外部4TBドライブ接続
- マウント解除された1TB SSD(回復しようとしています)
- 気にしないでくださいdd
- 荷物を積んだ
photorec
- 手順は次のとおりです。https://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step
- 私が別にした唯一のことは、検索するファイル形式を変更し、すべてオフにして
.tx?
関連.txt
オプション(.cソースファイルなどを含む)のみを検索することでした。
データ処理
- Photorecは何百もの出力フォルダと何千ものファイルを作成しました。
- ファイル名またはディレクトリ名の命名/番号付け規則がわかりません。
- ファイル名がすべて横説説ですね。
grep -rIw
完全な単語文字列に正確に一致するサブフォルダを検索するために使用されます。- bashスクリプトを使用して出力から一部の処理を実行して、無関係な行を削除します。
diff
一致する結果を比較するために使用されます。- 私のソースファイルの1つの最新バージョンを探す
- まだいくつか残っています...
一般化する
これが「受け入れられた答え」であるかどうかはわかりませんが、上記の方法はファイルを検索するために使用することです。
これは特に良いアプローチではありませんが、効果があります。
失われたデータが画像の場合は、コンテンツを閲覧したりサムネイルを表示したりすると、正しいファイルを見つけるのがはるかに簡単になります。
テキストファイルは、システムによって生成されたテキストファイル、ログなどによってシステムが多くの誤検出を生成するため、処理するのがより困難です。
答え3
十分に早く電源を切ると、パーティションのフルバイナリバックアップを実行した後、次のことができます。拡張を削除試してみてください。
私が正確に覚えている場合、extundeleteはパーティションのログを活用してrm -rf
。