web-dev-qa-db-ja.com

/ usr / binから削除されたファイルを復元するにはどうすればよいですか?

TL; DR下部にあります。


背景:

CentOS6.10本番サーバーで次のことが発生しました。私はブラウザベースのターミナルプログラムを使用して、コンソールベースのファイルエクスプローラであるプログラムMidnight Commanderを実行していました。残念ながら、この端末でのマウスサポートは正しく設定されておらず、_/usr/bin_フォルダー内のいくつかのファイルに誤ってmv操作を適用しました。実行可能ファイルは別のディレクトリに移動されました。ファイルを_/usr/bin_に戻すことはできましたが、確実に復元したかったのです。


壊れたファイルのテスト:

移動された実行可能なプログラムの1つは、まだ実行中のプログラムです。それは_dbus-daemon_と呼ばれます。これが私のマシンのプロセス_847_であると判断できました。

_readlink -f /proc/847/exe_を実行しても、何も返されません。

_ls -l | grep exe_フォルダーで_/proc/847_コマンドを実行すると、

lrwxrwxrwx 1 root root 0 Dec 4 01:01 exe -> \ (deleted)/bin/dbus-daemon


作業ファイルのテスト:

これを、mv操作の影響を受けない通常の実行可能ファイルと比較することにしました。 chrondを選択して、同じ結果が得られるかどうかを確認しました。 chrondは私のマシンのプロセス_1187_です。

_readlink -f /proc/1187/exe_を実行すると、_/usr/sbin/crond_が返されます

_ls -l | grep exe_フォルダーでコマンド_/proc/1187/_を実行すると、次のようになります。

_lrwxrwxrwx 1 root root 0 Dec 4 01:01 exe -> /usr/sbin/crond*_

ファイルを元に戻すことで、損傷を元に戻すことができると期待していました。しかし、コマンドは期待される結果を返していません。


TL; DR私の質問は次のとおりです。実行可能ファイルを_/usr/bin/_から移動した場合、問題なく元に戻すことはできますか?そうでない場合は、マシンを安全に再起動できるようにするために他に何ができますか?

2
iskyfire

procがバイナリをdeletedと見なす理由は、ファイルシステムからバイナリを移動したためです。ボリューム内で移動した場合は、procに新しいパスが表示されます。

あなたが見るのは、そのような変化の後の通常の状況です。何か問題があるという意味ではありません。すべてが正しいという意味ではありません...しかし、おそらくそうです。

1
Hauke Laging