小記Linux/UNIXでエラー削除されたファイルは元に戻ります。

2606 ワード

原文は猛印してくださいhttp://galoisplusplus.gitcafe.io/blog/2016/02/02/how-to-restore-deleted-file-in-linux/
一ヶ月前に、私の潔癖症が犯しました。find . -name "*~" -exec rm {} \;を実行したいです。あるカタログの下でvimによって生成されたファイルを実行したいですが、~を打って、一部のファイルを削除しました。ところが、今日の二月二日、私はまた二回も犯しました。死の歴史gitに一つの穴を開けられました。今回削除されたのは、わざわざバージョンコントロールに置かない配置ファイルがたくさんあります。今度はファイルを作って回復しなければなりません。
最も簡単な場合は、削除されたファイルはあるプロセスによって開かれ、このときには.git/indexにおけるプロセスのファイル記述子によって回復することができる。まず、git resetによってファイルを開くプロセスが見つかりました。gitfind . -name "*" -exec rm {} \;の後、以下のコマンド回復ファイルが実行されます。
cp /proc//fd/ 
残念なことに、私が削除したファイルは開けられていませんので、このような方式は使えません。/procは、削除されたファイルがあるファイルシステムがext 4であることを確認し、extのファイル回復方法を試しても良い。
ext 3/ext 4ファイルシステムの回復は、例えば、誤魔化したディレクトリを復元するためにlsofを使用することができる。
extundelete /dev/ --restore-directory 
誤用されたファイルを復元するには、
extundelete --restore-file 
さらに、PIDツールを使用してもよく、FDと比較して、df -Tはext 2/ext 3/ext 4ファイルシステムに適用されても良い。
debugfs -w /dev/
extundeleteにおいて、最近の削除動作をdebugfsで検索し、削除されたファイルのinodeを見つける。
debugfs: lsdel
次にもちろん、extundeleteを使用することができる。
extundelete --restore-inode 
でも、debugfsを使ってもいいです。
debugfs: dump  
多くの資料はまた、debugfsの中で使用できると述べています。
debugfs: logdump -i 
以下の情報が見つかりました
Blocks: (): 
lsdelコマンドでファイルを復元します。
しかし、私の問題はextundeletedebugfsを通して解決できませんでした。仕方なくPhotoRecを使って「黒科学技術」を使いました。PhotoRecを回復した後のファイル名が乱れました。幸い、私はagという大殺虫器があります。削除された配置ファイルを見つけたのは分のことです。
参考資料
  • マンproc
  • Finding open files with lsof
  • Bring back deleted files with lsof
  • How to recover deleted file if it is still opened by some process?
  • Arch党として当然アムウェイ一発Archwiki:File recovery
  • Recovering files from ext 4 partion
  • man debugfs
  • Linux debugfs Hack:Undlete Files
  • Linux file deleted recovery
  • undelete a just deleted file on ext 4 with extundelete
  • Unix/Linux undelete/recover deleted files
  • debugfs総括
  • Ext 3で削除されたファイルを復元する
  • ここでPhotoRec回復ファイルを整理するためのスクリプトがあります。