Ting-Jun (snsd0805)

Ting-Jun (snsd0805)

Developer. Student

© 2019

[筆記] ubuntu rm誤刪資料後

最近在寫linux系統的shell
可是因為最近也有學了python
所以我常常把兩者的語法搞混,因此寫了一些簡單筆記放在電腦
可是因為我把shell筆記放在shell script的資料夾位置
然而我在練習shell,想把編號001~編號009資料刪除,
一時腦殘竟直接寫

sudo rm 00 *


結果不小心把筆記也刪掉了QQ
這裡記一下舊資料方法

處理順序

  1. 找到原所處資料夾inode
  2. 找到原掛載處
  3. 使用工具確認檔案狀態是否可救援
  4. 確認可救援:使用工具開始救援

安裝使用工具

這裡使用extundelete,是一套免費開源的工具軟體
使用ext3或是ext4日誌式檔案系統,可以用這套工具救回資料
ubuntu環境下直接下apt指令安裝

	sudo apt-get install extundelete



該檔案所處資料夾inode

找到遺失檔案需先找到該所處資料夾的inode
以便後續搜尋該資料夾內曾經存在的資料

	#此為範例位址
	ls -id /home/snsd0805/文件/code/shell



會顯示該資料夾的inode於名稱前面

	6185589 shell/



記:inode

Inode儲存了檔案系統物件的一些元資訊,如所有者、存取權限(讀、寫、執行)、類型(是檔案還是目錄)、內容修改時間、inode修改時間、上次存取時間、對應的檔案系統儲存塊的位址,等等。
知道了1個檔案的inode號碼,就可以在inode元資料中查出檔案內容資料的儲存位址。

(取自維基百科)

找到掛載處

使用extundelete工具前需先知道原掛載處

	#此為範例位址
	df /home/snsd0805/文件/code/shell



可以看到檔案系統即該掛載點

	檔案系統         1K-區段     已用     可用 已用% 掛載點
	/dev/sda2      106571840 29406432 71728736   30% /



確認檔案狀態

使用工具列出資料夾內的檔案狀態
inode為剛剛資料夾的inode

	sudo extundelete /dev/sda2 --inode 6185589



因為掛載點屬於掛載狀態,因此會跳警告
但如果有辦法先卸載在使用工具更好

在這裡可以看到要救援的node檔案

	File name                  | Inode number | Deleted status
	.                           6185589
	..                          6051682	
	note                        6187846    	     Deleted
	test.sh                     6187911



開始救援

使用工具開始救援node檔案,
建議不要將工作目錄設定在救援檔所在裝置
並建議不要在掛載狀態進行救援工作

	sudo extundelete /dev/sda2 --resotre-file /home/snsd0805/文件/code/shell/note



成功救援後檔案會存在於終端機所在目錄裡新增的RECOVERD_FILES資料夾中

結束