Solaris 資料一覧

オープン中に削除したファイルを復元する方法

2007/12/28更新

対応バージョン: 8,9,10

オープン中のファイルを誤って削除してしまった場合、その処理を終了させていなければ復元できる。

例えばtail -fでファイルを監視していてそのファイルを削除してしまった場合、tailを終了させていなければ以下の方法で復元することができる。

tailのPIDを確認する

% ps -ef | grep tail
 foo   6572  6498  0 22:52:20 pts/1    0:00 tail -f sample

/proc//fdディレクトリに移動する

% cd /proc/6572/fd

プロセスが使用しているファイルディスクリプタの数だけ数字のファイルがあるのでfileコマンドなどでテキストファイルを探す

% ls -l  
-r--r--r--  0 foo  user       6 12月 28日  22:42 0
c---------  1 foo  tty   24,  1 12月 28日  22:52 1
c---------  1 foo  tty   24,  1 12月 28日  22:52 2

% file *
0:              ASCII テキスト
1:              文字型デバイス 特殊ファイル (24/1)
2:              文字型デバイス 特殊ファイル (24/1)

この場合は0のみがテキストファイルなので目的のファイルと断定することができる。複数ある場合はcatやmoreなどで中身を確認して判断する

当該ファイルを任意の場所にコピーする

% cp 0 /var/tmp/foo