linux rm 命令刪除文件恢復_Linux之恢復誤刪除文件

前言

每當我們在生產環境服務器上執行rm命令時,總是提心吊膽的,因為一不小心執行了誤刪,然后就要準備跑路了,畢竟人不是機器,更何況機器也有 bug。

那么如果真的刪除了不該刪除的文件,比如數據庫、日志或執行文件,該如何恢復?

模擬場景

1.刪除

誤刪除服務器目錄/root/selenium/Spider下的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)使用 lsof 命令查看當前是否有進程打開 /root/selenium/Spider/MySql.Data.dll文件:

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

bbdeae53c797860bfe21ac3ba1fee839.png

從上面可以看出,當前文件狀態為已刪除(deleted)。

(2)查看是否存在恢復數據:

/proc/13067/fd:進程操作的文件描述符目錄。
86:文件描述符。

>cat /proc/13067/fd/86

cda1fc6d717e38a1058721cb95526a15.gif

(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

重新運行程序:

af15e09bab961cedce0e957fda1bd3dd.png

解釋

通過前面的模擬場景演示了恢復文件的整個過程,那么原理是什么,在什么情況下,文件才是可恢復的呢?

在Linux系統中,每個運行中的程序都有一個宿主進程彼此隔離,以/proc/進程號來體現(Linux本質上就是一個文件系統),比如:ls -l /proc/13067 查看進程PID為13067的進程信息;當程序運行時,操作系統會專門開辟一塊內存區域,提供給當前進程使用,對于依賴的文件,操作系統會發放一個文件描述符,以便讀寫文件,當我們執行 rm -f 刪除文件時,其實只是刪除了文件的目錄索引節點,對于文件系統不可見,但是對于打開它的進程依然可見,即仍然可以使用先前發放的文件描述符讀寫文件,正是利用這樣的原理,所以我們可以使用I/O重定向的方式來恢復文件。

總結

如果不小心誤刪了文件,不要著急,首先使用 lsof 查看打開該文件的進程,然后再使用 cat /proc/進程號/fd/文件描述符查看恢復數據,最后使用I/O重定向的方式來恢復文件。

睿江云主機租用-云服務器-支持免費測試-國內專業的云主機提供商?www.eflycloud.com

57e1ef38b4a1e4c8f101421195759332.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535046.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ac2100 反彈shell無法粘貼_記一次突破反彈shell

背景某天閑著無聊,小伙伴發來一個某網站,說只能執行命令,不能反彈shell。測試對著目標站點一頓測試。發現確實存在shiro反序列化,并且存在可以利用的gadget。利用發現確實可以執行命令,但是我們執行反彈的時候。反彈不…

java三大特征 重載與重寫的區別

💡涉及的知識點速通🛫 OOP的三大特征都是什么?🪂 什么是封裝?🪂 什么是繼承?🪂 什么是多態?🛫 關于構造器你都知道什么?🛫 關于類的源文件都需要知道什么?🛫 重載和重寫都是什…

發生身份驗證錯誤_Python MySQL8.0 錯誤

Python MySQL8.0 錯誤:authentication plugin calling_sha2_password is not supported.Python3 進行到 python3 mysql(mysql-connector),然后安裝mysql-8.0.16,照著示例程序運行 python,遇到這個大大的問題:authentic…

vue 獲取當前元素的父元素_react獲取觸發元素的屬性 e.target.dataset

我的react項目中一個應用場景就是在點擊一個元素的時候想要獲取到這個元素的屬性。代碼如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//點擊標簽的時候觸發的函數 TagClick(e)>{console.log…

為什么要學Redis(NoSQL數據庫)

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

centos常用命令_二、Docker鏡像是什么?Docker常用命令

科技奇聞 關注讓你我共同進步文章來源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.幫助命令docker version #查看版本號docker info #顯示Docker系統信息&#xff0c;包括鏡像和容器數docker --help #查看Docker有哪些命令…

實現定時中斷_無線傳感器網絡實驗報告(二)Timer定時應用實驗

實驗二&#xff1a; Timer定時應用實驗2.1實驗目的1. 認識并了解 CC2530 定時器&#xff1b; 2. 學習定時器的基本配置與應用&#xff1b; 3. 在 ZigBee 模塊上運行定時器程序。2.2實驗原理根據數據手冊可知 CC2530 總共有 4 個定時器&#xff0c;但是定時器 2 被系統占用&…

詳析java中的關鍵字和權限修飾

&#x1f4a1;涉及的知識點速通&#x1f6eb; 關于關鍵字你都知道什么?&#x1fa82; this和super關鍵字&#x1fa82; instanceof關鍵字&#x1fa82; static關鍵字&#x1fa82; final關鍵字&#x1f6eb; 權限修飾符的作用范圍知多少?各位小伙伴們大家好&#xff0c;歡迎來…

JQ 全選后獲取選中的值_Filecoin如何創建賬戶錢包并獲取FIL測試幣

昨天"猩動力節點"加入了fielcoin的測試網絡&#xff0c;對用戶或者礦工來說&#xff0c;如何獲取代幣&#xff0c;創建錢包保護好自己的資產&#xff0c;每一個用戶來說都很關心。下面我們一起來學習如何創建賬戶錢包&#xff0c;并獲取FIL 測試代幣。在創建賬戶錢包…

Redis中 字符串的常用命令

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

mac wmware 無網絡_無線網絡中常用的技術名詞

1、LAN&#xff1a;即局域網&#xff1a;是路由和主機組成的內部局域網&#xff0c;一般為有線網絡。2、WAN&#xff1a;即廣域網&#xff1a;是外部一個更大的局域網。3、WLAN(Wireless LAN&#xff0c;即無線局域網)&#xff1a;前面我們說過LAN是局域網&#xff0c;其實大多…

python界面開發webview_python在webview和activity混合頁面下怎么定位

展開全部 genymotion 模擬器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安裝_Android Studio4.0 安裝及配置

本來打算十一月份寫的&#xff0c;結果。。。就在我備注原來的文章的時候&#xff0c;硬盤壞了。。。所以重新配置環境。。。換硬盤&#xff0c;。。。壞的太突然以至于數據都沒有備份。。。。建議大家在參考教程安裝之前先大致瀏覽一遍&#xff0c;這樣安裝的時候就會大致知道…

Redis 五大數據類型的常用命令——列表、集合、哈希、有序集合

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

python工程師面試寶典_2019年,Python工程師必考的6個面試題,Python面試題No5

第1題&#xff1a;Python里面如何實現tuple和list的轉換&#xff1f; 函數tuple(seq)可以把所有可迭代的(iterable)序列轉換成一個tuple, 元素不變&#xff0c;排序也不變 list轉為tuple&#xff1a; temp_list [1,2,3,4,5] 將temp_list進行強制轉換&#xff1a;tuple(temp_li…

aop注解配置切點 spring_springboot aop 自定義注解方式實現一套完善的日志記錄

一&#xff1a;功能簡介本文主要記錄如何使用aop切面的方式來實現日志記錄功能。主要記錄的信息有: 操作人&#xff0c;方法名&#xff0c;參數&#xff0c;運行時間&#xff0c;操作類型(增刪改查)&#xff0c;詳細描述&#xff0c;返回值。二&#xff1a;項目結構圖如果想學習…

抽象類、接口的區別和相似點

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的《Java核心技術 卷Ⅰ》筆記專欄&#xff0c;在這個系列專欄中我將記錄淺學這本書所得收獲&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波簡直就是血賺 &#x1f4a1;涉及的知識點速通&#x1f6eb; abs…

c標簽判斷true false jsp_Java學習知識點:小白如何掌握JSP技術?

今天千鋒廣州小編就給大家分享零基礎如何掌握JSP技術&#xff0c;下面一起來看看吧!一、Java初級開發之jsp概述1.關于jspJavaServer Pages簡稱jsp&#xff0c;從“server”這個詞可以看出&#xff0c;這其實也是一門java服務端技術&#xff0c;其實可以簡單的把jsp認為是servle…

python語言保留字的特點_python保留字及其說明

原博文 2019-07-14 22:05 ? 保留字 說 明 and 用于表達式運算&#xff0c;邏輯與操作 as 用于類型轉換 assert 斷言&#xff0c;用于判斷變量或條件表達式的值是否為真 break 中斷循環語句的執行 class 用于定義類 continue 繼續執行下一次循環 ...011647 相關推薦 2019-12-19…

使用Java操作Redis的兩種方式Jedis、RedisTemplate

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…