sftpd檔案誤刪可否救回 [論壇 - Ubuntu安裝問題]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



sftpd檔案誤刪可否救回
會員二級
註冊日期:
2011/1/27 15:53
所屬群組:
已註冊使用者
等級: 6
HP : 0 / 145
MP : 21 / 3326
EXP: 82
離線
大家好,我的系統是 ubuntu1604-LTS server版本,我有安裝sftpd-ftp,但今天卻將一資料夾的檔案誤刪了,是否可救回呢??謝謝

6/25 15:03:13
應用擴展 工具箱
回覆: sftpd檔案誤刪可否救回
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 165 / 828
MP : 542 / 15927
EXP: 12
離線
國一生 寫到:
大家好,我的系統是 ubuntu1604-LTS server版本,我有安裝sftpd-ftp,但今天卻將一資料夾的檔案誤刪了,是否可救回呢??謝謝


先確認一下,您指的是「要將某個套件裡面的檔案,重新安裝回來」嗎?

若是如此,提供下列的方法給您參考,

不過因為不曉得您提到的「sftpd-ftp」是那個套件或是哪個指令,

所以以下我用「hello」這個套件來當範例說明。

================================================================================

假設我的系統原本已經安裝了「hello」這個套件。

執行下面指令,可以知道「hello」這個套件,安裝那些檔案在系統上


$ dpkg -L hello



顯示


/.
/usr
/usr/bin
/usr/bin/hello
/usr/share
/usr/share/doc
/usr/share/doc/hello
/usr/share/doc/hello/NEWS.gz
/usr/share/doc/hello/changelog.Debian.gz
/usr/share/doc/hello/copyright
/usr/share/info
/usr/share/info/hello.info.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/hello.1.gz



================================================================================

執行


$ whereis hello



顯示


hello: /usr/bin/hello /usr/share/man/man1/hello.1.gz /usr/share/info/hello.info.gz



然後可以執行下面指令,可以知道「/usr/bin/hello」是來自那個套件。


$ dpkg -S /usr/bin/hello



顯示


hello: /usr/bin/hello



表示「/usr/bin/hello」來自於「hello」這個套件。

執行


$ which hello



顯示


/usr/bin/hello



所以上面也可以結合成一行,執行指令如下


dpkg -S $(which hello)



或是執行


dpkg -S `which hello`



一樣顯示


hello: /usr/bin/hello



表示「/usr/bin/hello」來自於「hello」這個套件。


================================================================================

假設我刪除了「/usr/bin/hello」這個檔案


$ sudo rm /usr/bin/hello



執行


$ ls /usr/bin/hello



顯示


ls: cannot access '/usr/bin/hello': No such file or directory




接著下面介紹兩個方法,把「/usr/bin/hello」這個檔案還原

================================================================================

## 方法一

執行下面指令,重新安裝「hello」這個套件。


$ sudo apt-get install hello --reinstall



這時候再執行


$ ls /usr/bin/hello



就會顯示


/usr/bin/hello



或是執行


$ ls /usr/bin/hello -l



顯示


-rwxr-xr-x 1 root root 26808 Apr 12 2017 /usr/bin/hello



================================================================================

## 方法二

假設我刪除了「/usr/bin/hello」這個檔案


$ sudo rm /usr/bin/hello



執行下面指令,下載「hello」這個套件。


$ apt-get download hello



這時候就會下載一個檔案「hello_2.10-1build1_amd64.deb」<-- 我是在「Ubuntu 18.04」上測試的。

接著執行下面指令,將「hello_2.10-1build1_amd64.deb」解開


$ dpkg -x hello_2.10-1build1_amd64.deb hello



這時候會產生一個資料夾「hello」

這時候可以執行下面指令,觀看「hello」這個資料夾結構。


$ tree hello



顯示


hello
└── usr
    ├── bin
    │   └── hello
    └── share
        ├── doc
        │   └── hello
        │       ├── changelog.Debian.gz
        │       ├── copyright
        │       └── NEWS.gz
        ├── info
        │   └── hello.info.gz
        └── man
            └── man1
                └── hello.1.gz

8 directories, 6 files



所以可以執行下面指令,將「./hello/usr/bin/hello」這個檔案,複製到「/usr/bin/hello」這個路徑。


$ sudo cp ./hello/usr/bin/hello /usr/bin/hello



執行


$ ls /usr/bin/hello -l



顯示


-rwxr-xr-x 1 root root 26808 Jun 25 20:01 /usr/bin/hello



這樣「/usr/bin/hello」就被復原了。

================================================================================

執行下面指令,確認「/usr/bin/hello」的功能


$ hello



或是執行


/usr/bin/hello



顯示


Hello, world!



執行


$ hello -g 'hi hi hi!'



顯示


hi hi hi!



================================================================================

更多的套件操作討論案例和參考連結,之前有紀錄在「[索引] 套件操作實務」。

================================================================================

以上提供參考

報告完畢


6/25 20:10:49
應用擴展 工具箱
回覆: sftpd檔案誤刪可否救回
會員二級
註冊日期:
2013/11/7 9:24
所屬群組:
已註冊使用者
等級: 8
HP : 0 / 186
MP : 30 / 2746
EXP: 46
離線
我猜樓主的意思可能是用sftp軟體,刪掉了某個不該刪除的資料夾,而不是sftp軟體本身?如果是這樣子的情境,我也想知道是不是有救回來的方法?

6/26 9:46:26
應用擴展 工具箱
回覆: sftpd檔案誤刪可否救回
會員三級
註冊日期:
2009/1/10 10:33
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 317
MP : 71 / 9141
EXP: 68
離線
國一生 寫到:
大家好,我的系統是 ubuntu1604-LTS server版本,我有安裝sftpd-ftp,但今天卻將一資料夾的檔案誤刪了,是否可救回呢??謝謝


理論上有可能救回,是實務上非常麻煩!
第一步要做的是馬上關掉主機,不要讓系統有機會把新檔案資料寫到硬碟裏面。

因為任何一個新寫入的動作,即可能把刪掉檔案的原儲存空間區塊「利用掉」或說「蓋掉」。

如果你檔案刪除已有一段時間,這段時間有其他使用者進來寫資料,那麼恢復的可能性就會大大減低。

關掉主機後,接著要把原硬碟拆下來,以「僅讀」(read only)方式
掛到另一的電腦,然後才能設法去找出哪些硬碟區塊是被刪除檔案所用,
當然找區塊的要領與你所用的檔案系統有關,但是原則上它們有被檔案系統「標號」連結起來,所以如果沒被蓋掉,一定可以被讀出後再串起來,回復原形。
以上是可以救回的理論,但實務則要找專業幫忙。

電腦機房老手普通都避免直接刪除檔案,一定是先備份後,再刪除…

6/26 17:24:36
應用擴展 工具箱
回覆: sftpd檔案誤刪可否救回
會員三級
註冊日期:
2009/1/10 10:33
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 317
MP : 71 / 9141
EXP: 68
離線
Google 一下找到這個解答,或有參考價值

http://extundelete.sourceforge.net/

6/27 12:59:37
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.