rmで削除したファイルを復元できる lsof
使用用途
・rmで間違えて消してしまったファイルを復元したい時に使う。
注意
- 消去したファイルを開いているプロセスが存在している時のみ可能。
-
rm
はinodeへのリンクを削除しているだけであって、inodeそのものを消しているわけではないので、inodeへの全てのリンクが失われない限りinodeとデータは失くならない。 - ファイルを開いているプロセスが存在していればそこから
/proc/【プロセスID】/fd/
を辿り復元する事ができる。
使い方
sqlのコマンド
$ touch hoge.txt // ファイル作成
$ vi hoge.txt // ファイル内に書き込む
※このファイルに下記の内容を書き込んだ
ファイルを消してしまった。
でも復元できる。
$ less hoge.txt // ファイルの中身を見る
※ Control + z で less を終了
$ rm hoge.txt // ファイル削除
$ lsof | grep "hoge.txt" // 現在開いているファイルの中でhoge.txtが入っているファイルを返す
less 12345 hoge 4r REG 259,1 33 59166498 /home/hoge/hoge.txt (deleted)
※2つ目がプロセスID、4つ目がファイル記述子
$ cp /proc/12345/fd/4 ./
$ cat 4
ファイルを消してしまった。
でも復元できる。
ファイルに書き込んだ内容が復元できた。
説明
less
- ファイルの中身を見る。
- Control + z で less を終了
lsof
- 現在開いているファイルを一覧表示する
grep
- 指定した文字列を検索するときに使うコマンド
proc
-
ディレクトリ。
-
ハードディスクやSSDなどのストレージ上ではなく、メモリの中に作られるファイルシステム。
-
procにあるファイルは普通のファイルではなく、仮想ファイルという特殊な形式。
-
lsof | grep "hoge.txt"で出てきた2つ目がプロセスID、4つ目がファイル記述子("4rの"r"は"regular file"の略であり、通常のファイルを意味する)
Author And Source
この問題について(rmで削除したファイルを復元できる lsof), 我々は、より多くの情報をここで見つけました https://qiita.com/marukome/items/50f90f9a6f5078276e4d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .