linux下恢复误删文件
生活随笔
收集整理的這篇文章主要介紹了
linux下恢复误删文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?linux下文件實際上是一個指向inode的鏈接, inode鏈接包含了文件的所有屬性, 比如權限和所有者, 數據塊地址(文件存儲在磁盤的這些數據塊中). 當你刪除(rm)一個文件, 實際刪除了指向inode的鏈接, 并沒有刪除inode的內容. 進程可能還在使用. 只有當inode的所有鏈接完全移去, 然后這些數據塊將可以寫入新的數據.
proc文件系統可以協助我們恢復數據. 每一個系統上的進程在/proc都有一個目錄和自己的名字: 里面包含了一個fd(文件描述符)子目錄(進程需要打開文件的所有鏈接). 如果從文件系統中刪除一個文件, 此處還有一個inode的引用:? /proc/進程號/fd/文件描述符? $ lsof | grep delete #查看進程里面是否有被刪除文件的連接,如下形式: [root@local ~]$ lsof | grep myfile less 9104 root 4r REG 253,0 116549 492686 /home/root/myfile (deleted) [root@local ~]$ ls -l /proc/9104/fd/4 lr-x—— 1 root root 64 Nov 20 13:00 /proc/9104/fd/4 -> /home/root/myfile (deleted) [root@local ~]$ cp -a /proc/9104/fd/4 myfile.wrong [root@local ~]$ ls -l myfile.wrong lrwxrwxrwx 1 root root 29 Nov 20 13:02 myfile.wrong -> /home/root/myfile (deleted) [root@local ~]$ file myfile.wrong myfile.wrong: broken symbolic link to `/home/root/myfile (deleted)’ [root@local ~]$ file /proc/9104/fd/4 /proc/9104/fd/4: broken symbolic link to `/home/root/myfile (deleted)’ 然后, 使用cp拷貝出數據(最好是在被刪除文件的目錄下進行以下操作): [root@local ~]$ cp /proc/9104/fd/4 myfile.saved 最后, 確認一下文件: [root@local ~]$ ls -l myfile.saved -rw-rw-r– 1 root root 116549 Nov 20 13:03 myfile.saved[root@local ~]$ cmp myfile.saved myfile.new #cmp比較無任何顯示, 表示兩個文件完全相同, 恢復成功?
轉載于:https://blog.51cto.com/viola/976157
總結
以上是生活随笔為你收集整理的linux下恢复误删文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最长单调子序列及计数(poj1952)
- 下一篇: 梦到老公的妹妹结婚是什么意思