rm
によって削除されたファイルを復元/復元するコマンドはありますか?
$ rm -rf /path/to/myfile
myfile
を回復するにはどうすればよいですか?そのようなツールがある場合、どのように使用できますか?
誰かがコメントで提供したリンクは、おそらくあなたの最高のチャンスです。
Linux debugfs Hack:Undelete Files
少し威圧的に見えても、その記事は実際にはかなり簡単です。一般的な手順は次のとおりです。
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ファイルを復元する方法 。
少しチャンスがありますが、このスクリプトまたは答えの次の解決策で削除されたファイルを回復できることがあります:
#!/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の哲学がすべてファイルなら、これを利用する時が来たのではないか。
Arch (テキストファイルのみに適用されます)
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
どこ /dev/sdXN
は失われたファイルを含むパーティションです(不明な場合はmount
で確認してください)。
少し時間がかかりますが、まだコミットしていないソースコードを誤って削除してしまった場合は、うまくいきました。
先週も同じ問題があり、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でファイルをすでに削除している場合は、解決策ではありませんrm:-}
回復ツール-コマンドライン:
回復ツール-Gui:
情報:
私の個人的な経験では、ufs-Explorerとphotorecを使用してデータを取り戻します
(1)=オープンソースではない、無料ではない
(2)=オープンソースではない、無料
(3)=オープンソースで無料
(4)= NTFSをサポートする
(5)=ディレクトリ構造機能がある
外部インターフェースを介してドライブを接続します
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
詳細については、このリンクを参照してください: extundelete を使用して、ext4で削除されたばかりのファイルの削除を取り消します。
それは不可能であり、非常に非常に困難であることに同意しません。また、Linuxでこれを実行したこともありません。
ファイルが削除されても、実際には削除されません。何が起こるかというと、ハードドライブ上にあったスペースはリセットのようなものなので、コンピュータがそこにデータを書き込もうとしても、何も問題はありません。一般に、削除したと思ったハードドライブ上のデータは、ほぼ1年後に存在する可能性があります。または、少なくとも、これはWindowsマシンでの私の経験です。 Linuxのコマンドラインから同じように機能するかどうかはわかりませんが、そのようなパーティションを開くには別のLive CDが必要になる可能性があり、ファイルがまだ存在する保証もありません。私はこれをWindows XPでZero Assumption Recoveryを使用して数回実行しました。よく見ると、同じようなツールがあると思います。
これにより、一部のユーザーのトラブルを回避できる場合があります。
geditを使用してそのファイルを編集したことがある場合、デフォルトでそのファイルのコピーが作成されます。
たとえば、誤って「myfile.txt」を削除したとしましょう。
削除したファイルが含まれていたフォルダーで、次のコマンドを使用すると、そこからコピーを復元できます。ls | grep 'myfile.txt~'
少し運が良ければ、それを見つけてから:cp 'myfile.txt~' 'myfile.txt'
たった今この方法でファイルを復元しました。がんばって!
ファイルを削除すると、そのファイルのiノードテーブルのリンク数が1つ減ります。 Unixでは、リンクカウントが0に下がると、そのファイルのデータブロックは空きとしてマークされ、通常、それらのデータブロックへの参照は失われます。 @fedorquiのコメントから、これらのブロックにアクセスする方法がいくつかある可能性があることを発見しましたが、これはext3ファイルシステムにのみ適用できます。
ファイルを保存する1つの方法は、ファイルをゴミ箱の領域に移動できる関数を作成することです($HOME/.trash
)そしてそこから必要なファイルを回復します。この関数はrm
のエイリアスにすることができます。 cronジョブをスケジュールして、特定の日数の間ごみ箱領域にあるファイルを削除することができます。