序文 Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません。 Linux でファイルを削除した後に復元できる状況は 2 つあります。1 つは削除後にプロセス内に削除情報が存在する場合、もう 1 つは削除後にプロセスが見つからず、ツールの助けを借りてのみ復元できる場合です。検査と紹介はこちら 1. 誤ってファイルを削除するプロセスがまだ存在する状況。 これは通常、継続的な標準入力または標準出力を持つアクティブなプロセスがある場合に発生します。ファイルが削除されても、プロセス PID は依然として存在します。このため、一部のサーバーでは一部のファイルが削除されてもディスクは解放されません。たとえば、現在の例: シェル ターミナルを使用して、テスト ファイルに cat を追加します。 [root@21yunwei_backup ~]# echo "hello py" > testdelete.py [root@21yunwei_backup ~]# cat >> testdelete.py こんにちは削除 このファイルを別の端末で表示すると、内容が明確に表示されます。 [root@21yunwei_backup ~]# cat testdelete.py こんにちは、パイ こんにちは削除 この時点で、現在のサーバー上のファイルrm -f ./testdelete.pyを削除します。 このディレクトリを確認するコマンドです。ファイルはもう存在しないので、復元します。 1. lsof を使用して、削除されたファイル プロセスがまだ存在するかどうかを確認します。ここでは lsof コマンドを使用します。インストールされていない場合は、yum または apt-get でインストールしてください。同様の状況では、まず lsof を使用して、削除されたファイルがまだ存在するかどうかを確認できます。 [root@21yunwei_backup ~]# lsof | grep 削除済み mysqld 1512 mysql 5u REG 252,3 0 6312397 /tmp/ibzW3Lot (削除済み) cat 20464 root 1w REG 252,3 23 1310722 /root/testdelete.py (削除済み) 幸いなことに、この場合はプロセスがまだ存在するので、回復操作を開始します。 2. 回復。 復元コマンド: cp /proc/pid/fd/1 /指定されたディレクトリ/ファイル名 現在の状況のプロセス ディレクトリ (通常は /proc/pid/fd/) を入力します。 [root@21yunwei_backup ~]# cd /proc/20464/fd [root@21yunwei_backup fd]# ll 合計 0 lrwx------ 1 ルート ルート 64 11月15日 18:12 0 > /dev/pts/1 l-wx------ 1 root root 64 11月15日 18:12 1 > /root/testdelete.py (削除済み) lrwx------ 1 ルート ルート 64 11月15日 18:12 2 > /dev/pts/1 回復作戦: cp 1 /tmp/testdelete.py ファイルを表示: [root@21yunwei_backup fd]# cat /tmp/testdelete.py こんにちは、パイ こんにちは削除 回復が完了しました。 第二に、誤って削除されたファイルプロセスは存在しなくなり、ツールの助けを借りて復元できます。 削除するディレクトリを作成し、その内容を含むファイルをエコーします。 [root@21yunwei_backup 21yunwei]# ツリー 。 ├── 削除テスト │ └── メール │ └── テスト.py ├── 失われたもの+見つかったもの └── パスワード 3 つのディレクトリ、2 つのファイル [root@21yunwei_backup 21yunwei]# cat /21yunwei/deletetest/mail/test.py こんにちはDJ [root@21yunwei_backup 21yunwei]# テール -2 パスワード haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin 削除操作を実行するには: [root@21yunwei_backup 21yunwei]# rm -rf ./* [root@21yunwei_backup 21yunwei]# ll 合計 0 誤って削除したファイルの復元を開始します。この状況は通常、デーモンまたはバックグラウンド プロセスが継続的に入力していない場合に発生し、削除されて lsof がそれを認識できなくなります。ツールを使用する必要があります。ここで使用するツールは、サードパーティ製のツールである extundelete です。回復手順は次のとおりです。 1. inode が上書きされないように、現在のパーティションでのすべての操作を停止します。 inode が上書きされると、基本的にサイクリングは完了です。たとえば、パーティションのサービスを停止したり、ディレクトリが配置されているデバイスをアンインストールしたり、必要に応じてネットワークから切断したりできます。 2. サードパーティ製ソフトウェアの回復失敗によるデータ損失を防ぐために、dd コマンドを使用して現在のパーティションをバックアップします。データが非常に重要な状況に適しています。このテストではバックアップはありません。バックアップが必要な場合は、次の方法を検討できます。
3. umount コマンドを使用して、現在のデバイス パーティションをアンインストールします。または、fuser コマンド。 umount /dev/vdb1 または umount /21yunwei デバイスがビジー状態の場合は、fuser コマンドを使用してアンインストールを強制することができます: fuser -m -v -i -k /21yunwei 4. サードパーティのツール extundelete をダウンロードしてインストールし、誤って削除されたファイルを検索して復元します。 http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 で実行します。 tar jxvf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure 作る インストールする 誤って削除されたファイルをスキャンします: [root@21yunwei_backup extundelete-0.2.4]# extundelete --inode 2 /dev/vdb1 注意: 拡張属性は復元されません。 ファイルシステムのメタデータを読み込んでいます... 8 つのグループが読み込まれました。 グループ: 0 inode 2の内容: 。 .N 行を省略 ファイル名 | Inode 番号 | 削除ステータス . 2 .. 2 紛失+発見 11 削除済み deletetest 12 削除されました パスワード 14 削除 スキャンにより削除したフォルダーが見つかったので、回復操作を実行します。 (1)単一ファイルのパスワードを復元する [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-file パスワード 注意: 拡張属性は復元されません。 ファイルシステムのメタデータを読み込んでいます... 8 つのグループが読み込まれました。 ジャーナル記述子を読み込んでいます... 46 個の記述子が読み込まれました。 ファイルpasswdが正常に復元されました 復元されたファイルは現在のディレクトリ RECOVERED_FILES に配置されます。 復元されたファイルを表示します: [root@21yunwei_backup /]# tail -5 回復したファイル/passwd mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix 監視システム:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin (2)ディレクトリの復元deletetest [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-directory deletetest 注意: 拡張属性は復元されません。 ファイルシステムのメタデータを読み込んでいます... 8 つのグループが読み込まれました。 ジャーナル記述子を読み込んでいます... 46 個の記述子が読み込まれました。 ディレクトリ deletetest 内の回復可能な inode を検索しています... 回復可能な i ノードが 5 つ見つかりました。 削除されたファイルのディレクトリ構造を調べています... [root@21yunwei_backup /]# cat RECOVERED_FILES/deletetest/mail/test.py こんにちはDJ (3)すべてを復元する [root@21yunwei_backup /]# /dev/vdb1 を消去 --restore-all 注意: 拡張属性は復元されません。 ファイルシステムのメタデータを読み込んでいます... 8 つのグループが読み込まれました。 ジャーナル記述子を読み込んでいます... 46 個の記述子が読み込まれました。 ディレクトリ / ... 内の回復可能な inode を検索しています。 回復可能な i ノードが 5 つ見つかりました。 削除されたファイルのディレクトリ構造を調べています... 回復可能な inode はまだ 0 個失われています。 [root@21yunwei_backup /]# cd RECOVERED_FILES/ [root@21yunwei_backup 回復されたファイル]# ツリー 。 ├── 削除テスト │ └── メール │ └── テスト.py └── パスワード 2 つのディレクトリ、2 つのファイル (4)指定されたinodeを復元します。 [root@21yunwei_backup /]# /dev/vdb1 を extundelete --restore-inode 14 に変更します 注意: 拡張属性は復元されません。 ファイルシステムのメタデータを読み込んでいます... 8 つのグループが読み込まれました。 ジャーナル記述子を読み込んでいます... 46 個の記述子が読み込まれました。 [root@21yunwei_backup /]# 末尾 -5 /RECOVERED_FILES/file.14 mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix 監視システム:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin inode を復元する場合、復元されたファイル名は以前のものと異なるため、個別に名前を変更する必要があることに注意してください。内容は問題ありません。 extundelete の詳しい使用方法については、extundelete –help オプション パラメータの説明を参照してください。現在、すべての回復操作が完了しています。 要約する Linux で lsof/extundelete ツールを使用して誤って削除されたファイルやディレクトリを復元する方法についての記事はこれで終わりです。Linux で誤って削除されたファイルやディレクトリを復元する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 6秒でMySQLに100万件のレコードを挿入する方法を教えます
最近Nginxを構築しているのですが、ドメイン名でアクセスできません。 nginx 構成ファイル n...
1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...
jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...
借財宝は最近人気が出ている携帯電話ローンソフトウェアプラットフォームです。知人同士の貸し借りが特徴で...
vue-element-admin インポートコンポーネントのカプセル化テンプレートとスタイルまず、...
1. まず、サーバーの mysql にアクセスして権限を変更します。 GRANT オプション付きで、...
序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...
目次エフェクト表示コンポーネント設定ステップ1ステップ2ステップ3コンポーネントの使用ステップ1ステ...
Mysqldump は MySQL の論理バックアップに使用されます。高速ではありませんが、柔軟性が...
1. 表示効果: 2、HTML構造 <div class="プロセスリスト-lpu...
序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...
会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...
目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...
a.htmとb.htmの2つのファイルがあります。同じディレクトリ内のa.htmの内容は次のとおりで...
React Native は、プルアップとプルダウンの監視ジェスチャを実装します。詳細なコアコードは...