一、 Linux運維人員學會備份相當重要node
刪除文件恢復mysql
第一種狀況:linux
當前系統有多個用戶,其中一個用戶對文件進行修改,則另外一個用戶對文件進行了刪除操做,那麼,這時候如何進行操做?sql
解決方法:後端
經過文件打開的PID以及打開文件的文件句柄運維
lsof | grep –i deleteide
cp /proc/file_pid/fd/句柄 /path/file_name工具
刪除之後不要再對磁盤進行任何操做 以避免恢復不可逆this
1. 在linux打開一個文件有一個對應的文件進程id生成在proc下面 只要進程id存在 即便文件被刪除咱們根據進程id就能夠恢復spa
實驗: 啓用兩個登陸 並都是root用戶登陸
Cp /etc/issue . 此時的點表示當前目錄 將etc下的issue文件複製到當前目錄
用戶1:cat >> issue 並輸入this is test
用戶2: rm –rf issue
ls查看是否被刪除
lsof –i |grepdelete Lsof查看進程號 lsof | grep –i delete 查看我後端有哪些文件被刪除
cd /proc/2747/fd/
cp 1 /tmp/issue 複製後並查看cat/tmp/issue 此時的1爲上一命令的句柄
解釋: cat說明是一個命令 2747是pid root用戶操做的
1w 打開文件進程它所使用的一個文件句柄 根據這個恢復
最後面字段的意思 我打開一個文件 狀態是deleted狀態 可是有進程存在
第二種狀況:
當前系統只有一個用戶在登陸,對文件進行了誤刪除操做,那麼這個時候如何進行操做 前提該文件系統爲日誌文件系統
注意事項以及解決思路:
1. 中止對當前分區作任何操做 防止其餘文件把刪除文件的inode值覆蓋
2. 經過dd命令對當前分區進行備份,防止經過第三方軟件恢復失敗,形成數據的丟失
dd if=/path/filename of=/dev/sdb1
3. 經過umount對當前設備分區基於卸載 umount /dev/sda or umount /mount_point
4. 下載並安裝第三方開源工具,進行對丟失的文件進行搜索並進行還原
5.
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
6. 編譯安裝 安裝此軟件時必須安裝依賴的庫文件 yum install e2fsprogs* -y
對源碼包解壓
相應的命令進行對源碼文件配置屬性 ./configure or cmake(對mysql編譯的時候用的到)
make && make install 編譯以及編譯安裝
extundelete相關命令安裝成功後而後利用這個命令對咱們丟失文件所在的目錄或者設備進行全文搜索
1. extundelete –node 2/dev/sdb1
2. extundelete –restore-inodeinode /dev/sdb1
3. extundelete –restore-all /dev/sdb1
4. 文件目錄 時間 extundelete --help
實驗:
1. 創建一單獨的分區爲日誌文件系統 並掛載
blkid /dev/sdb1 查看是否爲日誌文件系統
mount /dev/sdb1/root/test
2. mkdir /root/test/test_directory –p
cp/etc/passwd /etc/issue /etc/inittab . 複製三個文件到test_directory目錄
rm –rf test_directory/
umount /dev/sdb1
3. wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar–jxf *****.bz2
安裝以前安裝依賴包yuminstall e2fsprogs* -y
make時候提示 如下警告忽略
4.安裝成功後
1. extundelete –node 2/dev/sdb1
2. extundelete –restore-inodeinode /dev/sdb1 恢復特定inode號文件
3. extundelete –restore-all /dev/sdb1 恢復全部文件
恢復後爲 掛載
mount /dev/sdb1 /root/test
將一下三個文件拷貝到原有文件系統sdb1