最近在寫linux系統的shell
可是因為最近也有學了python
所以我常常把兩者的語法搞混,因此寫了一些簡單筆記放在電腦
可是因為我把shell筆記放在shell script的資料夾位置
然而我在練習shell,想把編號001~編號009資料刪除,
一時腦殘竟直接寫
sudo rm 00 *
結果不小心把筆記也刪掉了QQ
這裡記一下舊資料方法
處理順序
- 找到原所處資料夾inode
- 找到原掛載處
- 使用工具確認檔案狀態是否可救援
- 確認可救援:使用工具開始救援
安裝使用工具
這裡使用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資料夾中