偶然のrm -fを実行し、どのように復元するには?

序文

私たちは本番サーバー環境にrmコマンドを実行するたびに、常に緊張し、誤って実行誤って削除したため、その後、すべての後に、人々は、マシンでないマシンでも、ハァッ、ハァッ、バグを持って言及しないように、逃げるために準備すること。

あなたが本当にファイルを記録したり、実行し、データベースなど、削除すべきでないファイルを削除する場合は、行うことになって?葬儀、慎重にこのブログを読んでください方法についての情報。

シミュレーションのシナリオ

 

1、削除

スパイダーの下で誤って削除したサーバーのディレクトリ/ルート/セレン/ MySql.Data.dllファイル:

> rm -f /root/selenium/Spider/MySql.Data.dll
> ll /root/selenium/Spider/MySql.Data.dll
ls: cannot access /root/selenium/Spider/MySql.Data.dll: No such file or directory

 

2、回復

(1)現在のプロセスのオープン/root/selenium/Spider/MySql.Data.dllファイルかどうか確認するためにlsofのコマンドを使用:

> lsof | grep /root/selenium/Spider/MySql.Data.dll

 

上記から分かるように、ファイルの現在のステータスが削除済みとして(削除)。

(2)データの回復があるかどうかを確認するには:

/ procの/ 13067 / FD:プロセス・オペレーションのファイルディスクリプタディレクトリ。
86:ファイルディスクリプタ。

> cat /proc/13067/fd/86

 

(3)、I / Oリダイレクションファイルの回復を使用して

> cat /proc/23778/fd/86 > /root/selenium/Spider/MySql.Data.dll
> ls -l /root/selenium/Spider/MySql.Data.dll
-rw-r--r-- 1 root root 702464 Feb 10 12:03 /root/selenium/Spider/MySql.Data.dll

プログラムを再実行します。

ファイルの回復指示問題ありません。

 

知りたがります

ファイルを復元するプロセス全体を示し、前のシミュレーションシナリオを、そして原則が何であるか、どのような状況の下で、ファイルが回復可能です。

Linuxシステムでは、実行中の各プログラムするために、互いに分離ホストプロセスを有しているの/ proc /プロセスID、例えば、(Linuxのの性質上のファイルシステムである)を反映する:-l / PROC / 13067は、LS  PIDのプロセスを表示しますプロセス情報の13067;プログラムの実行時に、オペレーティングシステムがファイルに依存するために使用される現在のプロセスに使用可能なメモリの特別な領域を開きます私たちが実行したときに、オペレーティング・システムは、ファイルを読み書きするファイルディスクリプタをリリースする予定  RM -fを  あなたは、ファイルを削除すると、実際には、あなたはまだ以前に発行されたファイル記述子を使用してファイルを読み書きできることを、単にファイルシステムのファイルのディレクトリのinodeが表示されていないが、それはプロセスのために開かれて削除され、まだ見ることができ、このような原理の使用は、あります私たちはI Oリダイレクションモード/を使用してファイルを復元することができます。

概要

如果不小心误删了文件,不要着急,首先使用 lsof 查看打开该文件的进程,然后再使用 cat /proc/进程号/fd/文件描述符 查看恢复数据,最后使用I/O重定向的方式来恢复文件。

おすすめ

転載: www.cnblogs.com/lylsr/p/11228447.html