首頁  >  問答  >  主體

linux - Ubuntu服务器有回收站吗?误删了某些文件,能找回来吗?

我用的某台服务器是Ubuntu14.04,现在我在里面误删了两个文件夹,导致除了一下问题。

按照正常的思路,想找回收站,从回收站中再mv回来。但是网上转了一圈,似乎都说是在 /.Trash或者/.local/xxx 这样的目录下,但是我这没有这些目录啊,貌似这是桌面版的吧?

所以请问有没有什么简单的方法能恢复回来的?

阿神阿神2745 天前1498

全部回覆(5)我來回復

  • 怪我咯

    怪我咯2017-04-17 14:36:05

    首先可以告訴​​你沒有回收站

    找回文件用testdisk試試

    回覆
    0
  • 迷茫

    迷茫2017-04-17 14:36:05

    如果是雲端伺服器的話看看有沒有每日自動備份,有的話直接回滾,否則就基本回天乏術了,所以操作伺服器得極其小心才是。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:36:05

    linux 上
    請不要刪東西
    請不要刪東西
    請不要刪東西
    修改檔案前先備份:

    cp yourfile{,`date +"%Y%m%d"`}

    如果要刪除檔案:

    mv yourfile{,bak}
    

    可刪的檔案只有一種: 無用的日誌檔案
    可刪的檔案只有一種: 無用的日誌檔案
    可刪的檔案只有一種: 無用的日誌檔案

    回覆
    0
  • 迷茫

    迷茫2017-04-17 14:36:05

    伺服器上rm 是要命的命令。 。 。
    建議看一下safe rm,保護起來重要的文件。 。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 14:36:05

    方法1:
    當進程打開了某個檔案時,只要該進程保持打開該檔案,即使將其刪除,它依然存在於磁碟中.
    這意味著,進程並不知道檔案已經被刪除,它仍然可以向打開該檔案時提供給它的檔案描述符進行讀取和寫入.
    除了該進程之外,這個檔案是不可見的,因為已經刪除了其對應的目錄索引節點.

    查看已刪除但仍開啟的檔案:
    sudo lsof|grep deleted 例如返回:

    COMMAND     PID     USER   FD      TYPE     DEVICE SIZE/OFF       NODE NAME
    apache2    3000 www-data    2w      REG      251,0    15284     287237 /var/log/apache2/error.log.1 (deleted)
    apache2    3000 www-data    7w      REG      251,0   576513     287219 /var/log/apache2/access.log.1 (deleted)

    其中3000是進程PID,其中2w中的2就是已經被刪除的檔案的error.log.1的檔案描述符(FD).
    例如執行下面命令可見:

    ls -l /proc/3000/fd/2
    l-wx------ 1 root root 64 2016-03-21 08:30 /proc/3000/fd/2 -> /var/log/apache2/error.log.1 (deleted)

    這個檔案可以嘗試使用檔案描述子(fd)還原:

    sudo cp -L /proc/3000/fd/2 ./error.log.1
    sudo cp -L /proc/3000/fd/7 ./access.log.1

    方法2:
    使用rm需要格外小心.
    在不小心刪除後,最好及時卸載分區,避免資料覆蓋寫入.
    如果必須掛載,可以使用唯讀模式.

    extundelete可用於還原ext3或ext4分割區上rm刪除的檔案.
    http://extundelete.sourceforge.net/
    http://www.gnutoolbox.com/extundelete/

    基于文件恢复:
    extundelete /dev/sdb1 --restore-files /etc/passwd
    基于目录恢复:
    extundelete /dev/sdb1 --restore-directory /var/lib/mysql
    基于磁盘恢复:
    extundelete /dev/sdb1 --restore-all

    回覆
    0
  • 取消回覆