34
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rmで削除したファイルを復元できる lsof

Last updated at Posted at 2022-04-01

使用用途

・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

34
21
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?