linux系統:rm-rf執行以後,怎麼辦?我來教你恢復檔案。
大家好我是歷史,身為liunx系統管理員,rm命令是不是經常在用呢?有沒有做過rm命令以後,瞬間感覺無語的時候!
讓大家看看我的血的教訓!
果真感覺蛋疼了,欲哭無淚啊!寫了一天的成果,想著把之前備份的檔案刪除呢,結果把剛寫完的刪了。
國外著名linx管理員守則中有這麼一條:“慎用rm -rf命令,除非你知道此命令將帶來什麼後果。” 可見這個命令的重要性啊,書中看到的這句話,確實很對。
說了這麼多,教教大家執行了rm命令後 該這麼辦吧,是有辦法回覆的,我剛經過試驗證實了,google有一個開源的包 叫ext3grep工具他可以回覆刪除的檔案,甚至是drop database
xcy; 對,就是誤刪除的資料庫都可以回覆。
先說一下他的工作原理吧,然後我在把試驗分享給大家, 工作原理其實也不難,這個工具需要在ext3或者ext4 的檔案系統上才可以實現,因為ext3檔案系統是日誌型檔案系統,ext3檔案系統儲存資訊的時候是由inode號和block塊儲存的。
神馬? 不知道什麼是inode號?和block塊? 好吧,在說明白點,比如:一個分割槽比如一本書,那麼block塊就是書每頁的內容,而inode號 就是書的目錄,系統找檔案的時候先找inode號 然後根據inode號去找硬碟上的block快資訊,明白了吧!
在說一下刪除的原理吧。 當硬碟上的一個檔案刪除,其實沒有真正想象中的那樣在硬碟上清除掉的,他是把inode號和block塊的那個鏈子 斷開,但是真正的資料還是在硬碟上的,有沒有感覺在windos上刪除是那麼快,沒考慮到這吧,當你在刪除檔案的地方重新複製了新檔案,那時候才會把之前的檔案覆蓋掉,也就是說刪除了沒有關係,千萬不要往那個位置放檔案了。
原理說完了,開始實戰。
環境介紹: 系統版本:CentOS release 5.4 (Final)
1 安裝之前先檢查有沒有這個包: rpm -qa | grep e2fsprogs
2 ext4grep 是個原始碼包,需要編譯安裝
檢查一下e2fsprogs包是否完整,我的卻一個-devel的包,所以要先yum install e2fsprogs* 我偷懶了嘿嘿
解壓ext3原始碼包
進入原始碼包,然後開始檢查包的完整性 執行: ./configure 如果在這個過程中到最後有error那麼先檢查你的是不是少 e2fsprogs-devel
在進行 make && make install (編譯 編譯安裝) 一般這裡不會有問題如果這裡報錯了 檢查你係統是不是缺少 gcc gcc-c++ 這倆包 你可以 yum install gcc* 全部安裝 有好處沒有壞處哈哈哈
等待完整完,,好了安裝完以後。可以先檢視一個是否完成成功了,用: ext3grep -v 命令檢視ext3的版本資訊如下如:
當然如果不知道命令怎麼用可以輸入:ext3grep --help 檢視
然後我需要手動建立一個分割槽, 建立命令: fdisk /dev/sda 這個因為沒有辦法儲存影象所有我直接顯示的建立完成以後的。如果大家不知道怎麼建立 可以檢視我的 linx基本命令(檔案系統章節)。
然後 把這個分割槽y用ext3分割槽格式格式化 並且掛載到mnt目錄下。
然後 我進入了掛載的目錄裡, 建立了xcy目錄, 把/etc/passwrd 和 /etc/my.cnf 倆個檔案複製到了/mnt/xcy目錄中,並且 把倆個檔案改了下名字 為了我的辨認。 最後我執行了 rm -rf /xcy/* 把xcy檔案中的檔案都刪除了。
咳咳,然後我首先做的是解除安裝下來 把掛載的分割槽,因為 怕別人動了我的資料夾 在裡面複製了東西我就沒有辦法恢復了,在下面我執行:ext3grep /dev/sda5 --ls --inode 2 給你們解釋一下
ext3grep 刪除檔案的分割槽 --ls --innode inode號
為什麼最後我們要寫2 因為我不知道我的刪除的檔案的inode號多少, 所有我寫的是最大的inode / 的inode號 可以用: ls -id / 檢視
執行下去以後就會看到 他在刷幫你找刪除的檔案們。。
繼續走,,掃到最後我們想要知道的資料夾的inode號是2099 然後我們繼續執行掃描命令: ext3grep /dev/sda5/ --ls --lnode 2009 這個命令他就會掃 xcy目錄下的所有檔案(包括刪除 還有沒有刪除檔案的inode號了) ,然後我們就可以掃除來了,my.cnf.xcy innode號 是2011 passwd.xcy 檔案的inode號 是2010
現在我們的目標馬上就要達到了,知道了倆個檔案的inode號 就可以進行恢復了.
然後我們執行 ext3grep /dev/sda5 --restore-inode 2011 (恢復my.cnf.xcy檔案)
我們在執行 ext3grep /dev/sda5 --restore-inode 2010 (恢復passwrd.xcy檔案)
然後我們將解除安裝的檔案系統重現掛載上去。
恢復了,檔案不會在原來的位置,他會自動在/ 下建立一個叫RESTORED_FILES 目錄 你以後所有恢復的檔案都會在這裡儲存著,還有檔案的名字是以inode號命名的 你需要手動修改回來原名字,不要怕不知道那個檔案是那個,還記得我們 --ls 掃描的時候他都有對應的檔案和inode號
檔案恢復了,哈哈 是不是很激動啊,解決了liunx 下不能恢復的問題,這樣就可以大大節約成本 不用找硬碟恢復工具 不用花錢了, 對了還有呢, 這個同樣可以恢復 mysql 資料庫 誤操作刪除了庫或者表 都可以恢復 原理嘛 其實就是恢復相對應的mysql資料庫中的檔案了,自己嘗試一下吧,
對了在說一下,我截圖中 圈起來了是正確的命令,別的很多有操作錯誤的,因為畢竟第一次試驗嗎。。成功了很高興,,希望能幫到和我同樣遭遇的朋友們。
最後來個總結缺點: 我試驗發現這個功能有些缺點:
1 條件必須是ext3 ext4 日誌檔案系統才可以做到,別的我就不清楚了。
2 我這個是自己建立的分割槽/dev/sda5 也就是說我知道刪除的檔案在那個分割槽上,假如你刪除了檔案知道在哪裡分割槽中 那麼你就需要從sda1 ....sdaN 都試一遍吧,,,,。
有什麼問題可以留言 聯絡我 我看到了可以幫大家解決。。。
相關推薦
linux系統:rm-rf執行以後,怎麼辦?我來教你恢復檔案。
大家好我是歷史,身為liunx系統管理員,rm命令是不是經常在用呢?有沒有做過rm命令以後,瞬間感覺無語的時候! 讓大家看看我的血的教訓! 果真感覺蛋疼了,欲哭無淚啊!寫了一天的成果,想著把之前備份的檔案刪除呢,結果把剛
我來教你製作JS指令碼,一鍵完成學校教務系統的評教!
需求:我們在學校每學期都要完成教師教學評教,但是課程多,評教有點麻煩,我們能不能一鍵評教所有課程老師的評教呢? 答案肯定是有的。首先登陸你學校的教務系統,我學校的教務系統是正方教務系統。推薦使用Chrome瀏覽器,登陸到評教頁面,再按F12,顯示如下圖所示的頁面。
自從勒索病毒到來之後有幾個端口比較敏感,我來教你如何手動關閉外部連接到本地端口,防範中招!
電腦維護Windows 7與Windows 10方法一樣:控制面板---系統和安全---Windows 防火墻---高級設置---入站規則---新建規則---選擇“端口”後下一步---選擇“特定本地端口”,輸入 135,137,138,139,445 端口號,中間用英文逗號隔開即可---下一步選擇“阻止連
好萊塢原則:不要呼叫我,讓我來呼叫你
“控制反轉(Inversion of Control)的一個著名的同義原則是由Robert C. Martin提出的依賴倒置原則(Dependency Inversion Principle),它的另一個暱稱是好萊塢原則(Hollywood Principle:不要呼叫我,讓我來呼叫你)”[PicoConta
【譯】Redux 還是 Mobx,讓我來解決你的困惑!
array 內容 輸出 htop ace medium 則無 面向對象語言 時間 原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用了 Redux,但我最近都在
轉:css知多少(1)——我來問你來答
應付 margin 如何 www css選擇符 wid ots 解決 基礎 1. 引言 各位前端或者偽前端(比如作者本人)的同誌們,css對你們來說不是很陌生。比如我,在幾年之前上大學的時候,給外面做網站就用css,而且必須用css。這樣算下來也得六年多了,有些功能可能
想學spark但是沒有叢集也沒有資料?沒關係,我來教你白嫖一個!
本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 今天是spark專題的第六篇文章,這篇文章會介紹一個免費的spark平臺,我們可以基於這個平臺做一些學習實驗。 databricks 今天要介紹的平臺叫做databricks,它是spark的建立者開發的統一分析平臺。單憑spark
初階專案一-整合一套linux系統:紅帽系統,LVM分割槽,Apache服務,MySQL服務,資料定時備份指令碼
[TOC] # 一.專案目標 根據公司要求:整合一套LINUX系統,按照規定進行分區劃分,組建LVM分割槽,建立使用者;部署一套web+mysql,並通過shell指令碼+cron執行定期自動備份資料。 # 二.實施工具 本次軟體實施需要用到的工具: VMware Workstation虛
如何在Linux系統中熟練運用KILL命令,純幹貨!!!
sigsegv 忽略 特定 shell 不可 結束 幹貨 n+1 不發送 1.命令格式: kill[參數][進程號] 2.命令功能: 發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如 果任無法終止該程序可用“-KILL” 參數,其發送的信號為
Linux系統添加新硬盤,並分區設置啟動自動掛載,圖文教程!
自動掛載 令行 主機 mkf image 根目錄 分區 分享 教程 虛擬機添加硬盤的步驟就不多廢話了,主要列出添加硬盤後要進行設置的幾個詳細步驟: 1.查看磁盤信息:fdisk -ls 添加前如下圖所示: 添加後如下圖: 也可以用:ls /dev/sd*查看,如下圖:
讓Linux系統啟動過程自動執行自己編寫的指令碼
在Linux系統,/etc路徑下,一般有以下目錄: rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d 在系統啟動的過程中,會按照rc0.d~rc6.d的順序執行這些目錄下的指令碼,如果想要系統啟動過程中執行自己編寫的指令碼,只需要將指令
Linux系統下python程式碼執行shell命令的方法
方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os.popen(a,'w',1) print b 方法二:os.system #!/
Linux下防止rm -rf /命令誤刪除
做伺服器運維的人眾所周知, rm -rf / 命令在Linux下執行後,就是一場災難。 好吧,先看一個事例,瞭解下這個命令的恐怖>>>一個命令rm -rf/ ,他把整個公司刪沒了 為了防止這種誤刪除操作,找了很多辦法,有建議回收站機制、也有說給重要目錄設
演算法複雜度分析(上):分析演算法執行時,時間資源及空間資源的消耗
前言 演算法複雜度是指演算法在編寫成可執行程式後,執行時所需要的資源,資源包括時間資源和記憶體資源。 複雜度也叫漸進複雜度,包括時間複雜度和空間複雜度,用來粗略分析執行效率與資料規模之間的增長趨勢關係,越高階複雜度的演算法,執行效率越低。 複雜度分析是資料結構與演算法的核心精髓,指在不依賴硬體、宿主環境
標準Linux系統的程序、執行緒
程序:程序是一個執行程式併為其提供執行環境的實體,它包括一個地址空間和至少一個控制點,程序在這個地址空間上執行單一指令序列。程序地址空間包括可以訪問或引用的記憶體單元的集合,程序控制點通過一個一般稱為程式計數器(program counter,PC)的硬體暫存器
Linux系統下C語言執行緒
先上程式碼 /* * gcc multiple_thread.c -lpthread -o multiple_thread */ #include <stdio.h> #include <pthread.h> #include <unistd
Linux系統程式設計——程序和執行緒的區別與聯絡
在許多經典的作業系統教科書中,總是把程序定義為程式的執行例項,它並不執行什麼, 只是維護應用程式所需的各種資源,而執行緒則是真正的執行實體。 為了讓程序完成一定的工作,程序必須至少包含一個執行緒。 程序,直觀點說,儲存在硬碟上的程式執行以後,會在記憶體空間裡形成
Linux 系統 :CentOS7.X版本下安裝MySQL5.7資料庫
設定rpm下載目錄在/opt目錄下新建一個目錄存放mysql cd /opt sudo mkdir mysql12 下載MySQL的源 如果在這之前沒有提示-bash: wget: command not found,那麼還得先安裝wget sudo yum
PythonStock(21)股票系統:重新修改docker指令碼,升級python3。精簡程式碼。
前言 1,關於股票 最近抽時間把docker 映象重新打了下。 之前使用的是tensorlfow 因為那個是安裝 pandas numpy tushare 還都不方便。 造成映象特別的大,要下載好長時間,而且折騰了幾次,還使用的是pyth