Fsck

有沒有辦法從 lost+found 中自動恢復系統文件

  • September 26, 2019

我正在執行 Debian Buster,但根分區的文件系統不知從哪裡損壞了。我沒有做任何不尋常的事情,基本上只是在網上沖浪,在某些時候我發現根分區被重新安裝為只讀。

我嘗試重新啟動,但 grub 啟動到一個最小的 shell 而不是它通常的菜單。所以我從我的 Debian USB 記憶棒啟動進入救援模式,然後 fsck 根和 efi 分區,發現了很多錯誤,但似乎都已成功修復。Badblocks 沒有發現任何問題,而且硬碟驅動器看起來還不錯(沒有奇怪的噪音或類似的東西)。

Grub 又可以工作了,但是當我嘗試以正常或恢復模式啟動 Debian 時,它核心崩潰,說它找不到 libseccomp.so.2。然後我記得如果 fsck 無法確定文件的位置,它會將文件放入 lost+found 中。

那裡有很多文件。有沒有辦法自動從那裡恢復所有系統文件?還是我應該格式化並重新安裝?

編輯:SMART檢查的結果

# smartctl -HA -f brief -l xerror,error /dev/sda
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-4.19.34-1-lts] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
 1 Raw_Read_Error_Rate     PO-R--   100   100   050    -    0
 2 Throughput_Performance  P-S---   100   100   050    -    0
 3 Spin_Up_Time            POS--K   100   100   001    -    1712
 4 Start_Stop_Count        -O--CK   100   100   000    -    4003
 5 Reallocated_Sector_Ct   PO--CK   100   100   050    -    0
 7 Seek_Error_Rate         PO-R--   100   100   050    -    0
 8 Seek_Time_Performance   P-S---   100   100   050    -    0
 9 Power_On_Hours          -O--CK   042   042   000    -    23297
10 Spin_Retry_Count        PO--CK   179   100   030    -    0
12 Power_Cycle_Count       -O--CK   100   100   000    -    3471
191 G-Sense_Error_Rate      -O--CK   100   100   000    -    3116
192 Power-Off_Retract_Count -O--CK   100   100   000    -    73
193 Load_Cycle_Count        -O--CK   061   061   000    -    392741
194 Temperature_Celsius     -O---K   100   100   000    -    36 (Min/Max 8/48)
196 Reallocated_Event_Count -O--CK   100   100   000    -    0
197 Current_Pending_Sector  -O--CK   100   100   000    -    0
198 Offline_Uncorrectable   ----CK   100   100   000    -    0
199 UDMA_CRC_Error_Count    -O--CK   200   200   000    -    0
220 Disk_Shift              -O----   100   100   000    -    0
222 Loaded_Hours            -O--CK   052   052   000    -    19435
223 Load_Retry_Count        -O--CK   100   100   000    -    0
224 Load_Friction           -O---K   100   100   000    -    0
226 Load-in_Time            -OS--K   100   100   000    -    274
240 Head_Flying_Hours       P-----   100   100   001    -    0
                           ||||||_ K auto-keep
                           |||||__ C event count
                           ||||___ R error rate
                           |||____ S speed/performance
                           ||_____ O updated online
                           |______ P prefailure warning

SMART Extended Comprehensive Error Log Version: 1 (64 sectors)
No Errors Logged

在進行任何重大恢復工作之前,您應該檢查磁碟設備的 SMART 健康狀態,並備份所有關鍵數據。您的磁碟已被證明不完全可靠,因此請首先確保您的數據安全。如果 SMART 數據表明磁碟不太健康,最好換一個新的,而不是試圖延長舊磁碟的痛苦。

smartctl檢查磁碟健康狀況的一個好命令/dev/sda是:

smartctl -HA -f brief -l xerror,error /dev/sda

libseccomp.so.2應該在/usr/lib/x86_64-linux-gnu/(或等效於不同的硬體架構)。如果該目錄失去了,那將是一個相當大的混亂,因為其中有很多庫文件。幸運的是,它可能就像告訴包管理工具驗證任何lib*包然後重新安裝任何缺少文件的包一樣簡單——至少在理論上是這樣。

由於您擁有 Debian,dpkg -V | grep -v ' c '因此應檢查系統上從.dpkg軟體包安裝的所有文件,並報告任何已更改或失去的文件。該grep元件不包括列表中的任何配置文件。這是我能想到的這種情況下最有用的工具;如果您碰巧已經debsums安裝或可以安裝它,則debsums | grep -v 'OK$'可以用於相同目的。

如果您仍然碰巧有足夠的未損壞庫來允許此命令工作,

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

將自動重新安裝任何更改了非配置文件的軟體包。使用apt-get install --reinstall重新安裝任何其某些文件已損壞的軟體包比嘗試將它們從lost+found.

引用自:https://unix.stackexchange.com/questions/543575