對於帶有重音字元的文件,沒有這樣的文件或目錄
我只是想從我從一個垂死的邁拓共享儲存機箱中拉出的磁碟上搶救文件(關閉電源後無法恢復,大概是因為磁碟上的作業系統映像已損壞,共享上的文件沒有在使用中時間)。MSS 的韌體是基於 Linux 的。
我取出磁碟,放入 SATA USB 機箱,然後將其插入執行 Ubuntu MATE 16.04 的筆記型電腦。
我已經能夠掛載包含所有使用者數據的分區並且可以看到上面的文件。它似乎是一個 ext3/ext4 文件系統——Linux 可以辨識它,我可以瀏覽目錄樹。
但是,某些文件/目錄存在問題。下面的例子:
$ ls -la Photos/ ls: cannot access 'Photos/2012-06 Königssee': No such file or directory ls: cannot access 'Photos/2003-08 Fußballspiel': No such file or directory ls: cannot access 'Photos/2013-06 München': No such file or directory total 8 drwxrwxrwx 6 michael michael 12288 Nov 19 21:05 . drwxrwxrwx 3 michael michael 4096 Nov 19 21:05 .. d????????? ? ? ? ? ? 2003-08 Fußballspiel d????????? ? ? ? ? ? 2012-06 Königssee d????????? ? ? ? ? ? 2013-06 München
這似乎只影響字元超過 7 位限制的文件。但是,某些具有此類字元的文件可以工作——我應該提到,在某些時候我從備份中恢復了一些文件(使用設備的備份/恢復功能),而其他文件是通過 Samba 從客戶端電腦創建的。
它是可重現的,因為每次嘗試都是相同的文件導致此錯誤。其他操作,例如
chown -R .
對整個目錄的操作,也會對相同的文件給出相同的錯誤。當我嘗試將父目錄移動到不同的文件系統時,我得到了同樣的錯誤,並且這些有問題的對象的父目錄不會被刪除,因為它們不是空的。MSS 能夠毫無問題地讀取這些文件/目錄。這裡發生了什麼,我怎樣才能重新獲得對這些文件的訪問權限?
在嘗試了所有其他方法(將驅動器安裝在另一台機器上,恢復舊備份)之後,我最終決定冒險並 fsck 分區。
fsck -Dfp
抱怨錯誤並要求在沒有-p
選項的情況下再次執行。
fsck -Df
然後發現了幾個錯誤:Pass 2(目錄結構)發現了一些錯誤,例如:
Problem in HTREE directory inode 4997425: block #1 has bad max hash Problem in HTREE directory inode 4997425: block #2 has bad min hash Invalid HTREE directory inode 4997425 (/misc/Downloads). Clear HTree index<y>? yes
Pass 3 發現了一些非唯一的文件名並建議創建一個副本。IIRC 這些是我重新創建的文件,因為它們在 Samba 中不可見。
我允許 fsck 修復所有這些錯誤,然後再次掛載分區。
lost+found
什麼都不包含。違規對象存在於其原始位置。我現在很高興將剩餘的文件從分區中複製出來。