上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- / Top↑
久々にやっちまいました。綺麗にデータが消えました。(ToT)
誤ってデータファイルを綺麗さっぱり削除してしまいました。暫く前にも同様な失敗をしでかした事もありましたが、その時は心臓が止まるかとも思ったものです。でも、今回は…なんも考えられませんでした。(^^;) あまりにも久々だった為なのか?、いわゆる「虚無状態」に陥ってました。

最近は日常的に使って超安定稼働していた私のCentOS6でしたが、昨日カーネル更新を含んだCentOS6.8への修正があったため「あ゛~、久々にバックアップでも取るか…」と思い、何も考えずに操作してまして…、ハタッと気がついた時には何か消している感じの様な妙な違和感が…。(^^;)

言い訳をする訳ではないですが、私はコマンドでバックアップを取ってます。あらかじめ書いておいたコマンド(テキスト行)をGNOME端末へコピペしてEnterしてます。理想的にはコマンドは出来るだけ手打ちした方がいいと思う時もあるのですが、ルーチン化している作業でもあり、私は100%間違いの無いようにとそのような手順をいつも取ってました。

今回は1行で書かれた長いコマンドラインを良く確認していませんでした。私のコマンドラインは処理パターン別に幾つか並べて用意してあります。根本は暫く使用して環境差が発生していたのが原因でしたが、更にその使用を誤っていました。幾つもコマンドを連続させたその中には…世にも恐ろしい「rm -frd *」なんてコマンドも含まれてたのです。コマンドを実行後途中までは良かったのですが、その内に何だか表示がおかしい?…なんて思っている内にも処理はドンドン進んでいます。あわてて途中でキャンセルしてみたものの、もうその場でのリカバリは出来ない状態でフォルダ単位で綺麗さっぱり消されていました。

また、もう「頭の中が真っ白」だったのもあり?その場でジタバタしてしまったのも悪影響あったようです。事を起こしたそのPCでWeb検索してしまいました。「ハッ」と気がついた時にはもう遅い、気がついてから改めて他のPCで作業しましたが、このような時は「とにかくそのPCでの操作は止める」のが鉄則です。OSからすれば機械的に上書き処理されています。案の定、結構復元出来ないファイルもありました。

【参考サイト】
Linuxにて削除(rm)してしまったファイルを復元する【CentOS】

今回はこちら↑を参考にさせて頂きました。有難う御座いました。藁をもすがる思いでWebで調べ回った結果、とにかくファイルシステム単位で行うこちらの手順が一番分かりやすかったかと思います。(指定フォルダ以外は殆どコマンドがそのまま使えたのも助かりました)


【手順】
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1.extundeleteインストール
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
リカバリを行ってくれる神ツール(^^)、extundeleteをインストールします。

■【SUでログイン】
bash-4.1$ su
パスワード:

■【/tmpへ移動】
# cd /tmp

今回はそのまま既存の/tmpフォルダを使用しています。必要なければ作業後は手作業でフォルダごと削除しておいた方がよいかと思いますが、extundeleteツールは万一を考えて残すか別なフォルダへ移動(インストール)しておくと良いかと思います。(確か/tmp内は自動削除対象だったかもで、そのままでも消される?のかも)

■【作業フォルダの作成】
# mkdir extundelete

■【ツールのdownload】
# curl -L http://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download | tar xj

■【extundelete-0.2.4へ移動】
# cd extundelete-0.2.4

■【make install】
# ./configure --prefix=/tmp/a && make && make install

■【extundeleteインストールでgcc-c++エラーが出るのでyum install】
# yum install gcc-c++

■【再度make install】
# ./configure --prefix=/tmp/a && make && make install

■【e2fsprogs-develで再び怒られるのでインストール】
# yum -y install e2fsprogs-devel

■【再度make install】
# ./configure --prefix=/tmp/a && make && make install

ここでextundeleteインストール完了。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2.ファイルシステムの確認
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■【PCのファイルシステム確認】
# df -hT
Filesystem       Type  Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
             ext4 44G 5.0G 37G 13% /
tmpfs          tmpfs 935M 80K 935M 1% /dev/shm
/dev/sda3       ext4 477M 169M 283M 38% /boot
/dev/sdb1       vfat 1.9G 194M 1.7G 10% /media/usb

sdb1はUSBスティックを突っ込んでました。私の場合、リカバリすべきファイルシステムは「/dev/mapper/VolGroup-lv_root」となります。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
3.復元
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■【全削除ファイル復元】
# /tmp/a/bin/extundelete --restore-all --after $(date +%s -d '2 hour ago') /dev/mapper/VolGroup-lv_root

「-d '2 hour ago'」の「2」はその時間内(前)範囲の削除ファイル指定のようです。私の場合アタフタしていた時間があったので長めにしました。復元はファイルシステム単位なので「ごっそりと全ての復元」が行われます。

コマンドを実行すると「/tmp/extundelete-0.2.4/RECOVERED_FILES」配下にファイルやフォルダがリカバリされます。とにかく読み出せたファイルやフォルダを見境なく復元します。この中には正常なモノも失敗したファイル(ファイル名が正確に復元出来てない等)なども全て混在して復元されます。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
3.リカバリ
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■【リカバリ】
復元されたファイルをコピーなど行いながら選り分けて、手作業で本来のフォルダ位置に復元します。

復元データはユーザデータからシステムファイルまで様々あるようなので1つ1つ確認しながらの作業が必要でした。

私の環境ではHDD領域が少ないので、用心の為に1回別媒体に吸い出してから(コピー or 移動)1つ1つ戻して行きました。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■■■■■■■
実行環境
■■■■■■■
CentOS 6.8(Final)

■■■■■■■
最後に
■■■■■■■
とにかく別にバックアップを怠ってた訳ではなかったのですが(^^;)久々の失敗をしてしまいました。まぁ、やってしまったものは取り返しが付かないのですが、何とか全損ではなく、ある程度まではリカバリ出来たのは幸いでした。今回は別媒体での世代管理したバックアップなど、別手法でのバックアップ方法の検討も必要かも?と色々考えさせられました。


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
参考ですが、以下は私の環境での実行ログです。
 ・見やすいように適当にコマンド間で空き行を挿入しています。
 ・見易さのため不要なスペースや繰返し文字等はカットしています。
 ・リカバリログは膨大なのでカットしています。


bash-4.1$ su
パスワード:


# cd /tmp


# mkdir extundelete


# curl -L http://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2/download | tar xj
 % Total  % Received % Xferd Average Speed Time Time Time Current
                    Dload Upload  Tota  Spent  Left  Speed
100 105k 100 105k  0  0 12177   0 0:00:08 0:00:08 --:--:-- 237k


# cd extundelete-0.2.4


# ./configure --prefix=/tmp/a && make && make install
Configuring extundelete 0.2.4
configure: error: in `/tmp/extundelete-0.2.4':
configure: error: C++ compiler cannot create executables
See `config.log' for more details


# yum install gcc-c++
読み込んだプラグイン:fastestmirror, priorities, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: mirror.premi.st
 * extras: ftp.yz.yamagata-u.ac.jp
 * remi-safe: mirror.innosol.asia
 * rpmforge: mirror.fairway.ne.jp
 * updates: ftp.yz.yamagata-u.ac.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package gcc-c++.x86_64 0:4.4.7-17.el6 will be インストール
--> 依存性の処理をしています: libstdc++-devel = 4.4.7-17.el6 のパッケージ: gcc-c++-4.4.7-17.el6.x86_64
--> 依存性の処理をしています: gcc = 4.4.7-17.el6 のパッケージ: gcc-c++-4.4.7-17.el6.x86_64
--> 依存性の処理をしています: libmpfr.so.1()(64bit) のパッケージ: gcc-c++-4.4.7-17.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package gcc.x86_64 0:4.4.7-17.el6 will be インストール
--> 依存性の処理をしています: cpp = 4.4.7-17.el6 のパッケージ: gcc-4.4.7-17.el6.x86_64
--> 依存性の処理をしています: cloog-ppl >= 0.15 のパッケージ: gcc-4.4.7-17.el6.x86_64
---> Package libstdc++-devel.x86_64 0:4.4.7-17.el6 will be インストール
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be インストール
--> 依存性の処理をしています: libppl_c.so.2()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
--> 依存性の処理をしています: libppl.so.7()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-17.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package ppl.x86_64 0:0.10.2-11.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================
パッケージ      アーキテクチャ  バージョン  リポジトリー  容量
==================================================
インストールしています:
gcc-c++        x86_64    4.4.7-17.el6  base   4.7 M
依存性関連でのインストールをします。:
cloog-ppl       x86_64    0.15.7-1.2.el6 base  93 k
cpp           x86_64    4.4.7-17.el6  base  3.7 M
gcc           x86_64    4.4.7-17.el6  base  10 M
libstdc++-devel   x86_64    4.4.7-17.el6   base  1.6 M
mpfr          x86_64    2.4.1-6.el6   base  157 k
ppl           x86_64   0.10.2-11.el6  base   1.3 M

トランザクションの要約
==================================================
インストール 7 パッケージ

総ダウンロード容量: 22 M
インストール済み容量: 53 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
(1/7): cloog-ppl-0.15.7-1.2.el6.x86_64.rpm     | 93 kB  00:00
(2/7): cpp-4.4.7-17.el6.x86_64.rpm          | 3.7 MB  00:02
(3/7): gcc-4.4.7-17.el6.x86_64.rpm          | 10 MB  00:22
(4/7): gcc-c++-4.4.7-17.el6.x86_64.rpm        | 4.7 MB  00:06
(5/7): libstdc++-devel-4.4.7-17.el6.x86_64.rpm   | 1.6 MB  00:02
(6/7): mpfr-2.4.1-6.el6.x86_64.rpm          | 157 kB  00:00
(7/7): ppl-0.10.2-11.el6.x86_64.rpm         | 1.3 MB  00:01
---------------------------------------------------
合計                       529 kB/s | 22 MB  00:41
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
 インストールしています : mpfr-2.4.1-6.el6.x86_64            1/7
 インストールしています : cpp-4.4.7-17.el6.x86_64            2/7
 インストールしています : libstdc++-devel-4.4.7-17.el6.x86_64     3/7
 インストールしています : ppl-0.10.2-11.el6.x86_64            4/7
 インストールしています : cloog-ppl-0.15.7-1.2.el6.x86_64       5/7
 インストールしています : gcc-4.4.7-17.el6.x86_64            6/7
 インストールしています : gcc-c++-4.4.7-17.el6.x86_64          7/7
 Verifying      : ppl-0.10.2-11.el6.x86_64            1/7
 Verifying      : mpfr-2.4.1-6.el6.x86_64             2/7
 Verifying      : libstdc++-devel-4.4.7-17.el6.x86_64      3/7
 Verifying      : gcc-c++-4.4.7-17.el6.x86_64           4/7
 Verifying      : gcc-4.4.7-17.el6.x86_64             5/7
 Verifying      : cpp-4.4.7-17.el6.x86_64             6/7
 Verifying      : cloog-ppl-0.15.7-1.2.el6.x86_64        7/7

インストール:
 gcc-c++.x86_64 0:4.4.7-17.el6

依存性関連をインストールしました:
 cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-17.el6 gcc.x86_64 0:4.4.7-17.el6
 libstdc++-devel.x86_64 0:4.4.7-17.el6 mpfr.x86_64 0:2.4.1-6.el6
 ppl.x86_64 0:0.10.2-11.el6

完了しました!


# ./configure --prefix=/tmp/a && make && make install
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library


# yum -y install e2fsprogs-devel
読み込んだプラグイン:fastestmirror, priorities, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.yz.yamagata-u.ac.jp
* epel: mirror.premi.st
* extras: ftp.yz.yamagata-u.ac.jp
* remi-safe: mirror.innosol.asia
* rpmforge: mirror.fairway.ne.jp
* updates: ftp.yz.yamagata-u.ac.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package e2fsprogs-devel.x86_64 0:1.41.12-22.el6 will be インストール
--> 依存性の処理をしています: libcom_err-devel = 1.41.12-22.el6 のパッケージ: e2fsprogs-devel-1.41.12-22.el6.x86_64
--> 依存性の処理をしています: pkgconfig(com_err) のパッケージ: e2fsprogs-devel-1.41.12-22.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package libcom_err-devel.x86_64 0:1.41.12-22.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================
パッケージ      アーキテクチャ  バージョン リポジトリー  容量
==================================================
インストールしています:
e2fsprogs-devel    x86_64  1.41.12-22.el6 base 160 k
依存性関連でのインストールをします。:
libcom_err-devel   x86_64  1.41.12-22.el6 base  33 k

トランザクションの要約
==================================================
インストール  2 パッケージ

総ダウンロード容量: 193 k
インストール済み容量: 563 k
パッケージをダウンロードしています:
(1/2): e2fsprogs-devel-1.41.12-22.el6.x86_64.rpm   | 160 kB  00:00
(2/2): libcom_err-devel-1.41.12-22.el6.x86_64.rpm   | 33 kB  00:00
---------------------------------------------------
合計                         191 kB/s | 193 kB  00:01
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
 インストールしています : libcom_err-devel-1.41.12-22.el6.x86_64       1/2
 インストールしています : e2fsprogs-devel-1.41.12-22.el6.x86_64        2/2
 Verifying        : libcom_err-devel-1.41.12-22.el6.x86_64     1/2
 Verifying        : e2fsprogs-devel-1.41.12-22.el6.x86_64      2/2

インストール:
 e2fsprogs-devel.x86_64 0:1.41.12-22.el6

依存性関連をインストールしました:
 libcom_err-devel.x86_64 0:1.41.12-22.el6

完了しました!


# ./configure --prefix=/tmp/a && make && make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
extundelete.cc:571: 警告: unused parameter ‘flags’
Making install in src
/usr/bin/install -c extundelete '/tmp/a/bin'


# df -hT
Filesystem       Type  Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
             ext4 44G 5.0G 37G 13% /
tmpfs          tmpfs 935M 80K 935M 1% /dev/shm
/dev/sda3       ext4 477M 169M 283M 38% /boot
/dev/sdb1       vfat 1.9G 194M 1.7G 10% /media/usb


# /tmp/a/bin/extundelete --restore-all --after $(date +%s -d '2 hour ago') /dev/mapper/VolGroup-lv_root
Only show and process deleted entries if they are deleted on or after 1464294421 and before 9223372036854775807.
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... 357 groups loaded.
Loading journal descriptors ... 32002 descriptors loaded.
Searching for recoverable inodes in directory / ...
84087 recoverable inodes found.
Looking through the directory structure for deleted files ...
Unable to restore inode 393246 (var/lib/yum/yumdb/a/d9d5226132e0082378ddf749294e7a8d5afeef4b-alsa-utils-1.0.22-9.el6_6-x86_64): Space has been reallocated.
Unable to restore inode 393672 (var/lib/yum/yumdb/p/88f76ad3cca9161d43c80f2f3f8e54c8f3a65032-pulseaudio-module-x11-0.9.21-21.el6-x86_64): Space has been reallocated.
Unable to restore inode 524323 (var/lib/yum/yumdb/l/b77af146d9d7aed5ac326c6484ce283cbbacaa6e-libicu-4.2.1-12.el6-x86_64): Space has been reallocated.
Unable to restore inode 393395 (var/lib/yum/yumdb/t/ba5899a926d3a2a3301a6d2cca0b6adea2670939-tcpdump-4.0.0-5.20090921gitdf3cb4.2.el6-x86_64): Space has been reallocated.
Unable to restore inode 524385 (var/lib/yum/yumdb/s/da23edea4f13d0aa8cac6294082462c5df561941-sg3_utils-libs-1.28-8.el6-x86_64): Space has been reallocated.
Unable to restore inode 393477 (var/lib/yum/yumdb/r/439ef7ed93a1ae5c4dc37699d53b975566c4aa4f-rpm-4.8.0-47.el6-x86_64): Space has been reallocated.
Unable to restore inode 393398 (var/lib/xkb/server-0.xkm): Space has been reallocated.
Unable to restore inode 524394 (var/cache/yum/x86_64/6/base/repomd.xml.old.tmp): Space has been reallocated.
Unable to restore inode 524392 (var/cache/yum/x86_64/6/extras/51d5b8c955de57837e628c5f5313ad997fda8d63e527390b392318745f05af0b-primary.sqlite.bz2): Space has been reallocated.
Unable to restore inode 394214 (var/lock/makewhatis.lock): Space has been reallocated.
Unable to restore inode 2490380 (tmp/orbit-gdm/linc-a0f-0-5255da265534c): Space has been reallocated.
Unable to restore inode 2490492 (tmp/plugtmp/plugin-211.10.144-6.148): Space has been reallocated.
Unable to restore inode 2490541 (tmp/mozilla_k0/zTV5dSbF.zip.part): Space has been reallocated.
Unable to restore inode 2490550 (tmp/mozilla_k0/aDwiDHFK.pdf.part): Space has been reallocated.


以降はこの様な感じでメッセージが続きます(私の場合は30GB以上あったので暫く続いています)


Unable to restore inode 2490616 (file.2490616): Space has been reallocated.
Unable to restore inode 2490617 (file.2490617): Space has been reallocated.
Unable to restore inode 2490618 (file.2490618): Space has been reallocated.
Unable to restore inode 2621892 (file.2621892): Space has been reallocated.
#
2016.05.29 / Top↑
Secret(管理者にだけ表示を許可する)


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。