btrfs:ls 在目錄中列出相同檔案兩次

btrfs:ls 在目錄中列出相同檔案兩次

我在 Linux 4.10.8 上使用 btrfs。硬重啟後,Google Chrome 聲稱無法找到本地數據。當我添加相關的用戶 ID 後,其中一些就回來了,所以我很好奇發生了什麼事。我查看了 ~/.config/google-chrome,發現了這個:

$ ls -i 

...
3529523 'Local State'
3529523 'Local State'
...

這是同一個文件,具有相同的 inode,兩次。我猜這可能是 Google Chrome 感到困惑的原因,儘管它似乎在每次重新啟動之間都工作正常 - 向這個本地\狀態文件寫入了很多內容。然而,當我重新啟動它時,它說無法載入本地狀態。 SMART 檢查和 btrfsck 均未報告任何錯誤。有任何想法嗎?

答案1

我在使用內核的 btrfs 上遇到了同樣的問題,4.14.0但我的重複文件是.config/google-chrome-unstable/Default/TransportSecurity.我能夠透過這樣做來修復它

cd .config/google-chrome-unstable/Default
mkdir -p ~/tmp/Default
chmod 700 ~/tmp/Default
tar cf - . | (cd ~/tmp/Default && tar xf -)
cd ~
rm -rf .config/google-chrome-unstable/Default # this will error because the directory isn't empty because the duplicated file left some residue
mv .config/google-chrome-unstable/Default{,.old}
mv ~/tmp/Default .config/google-chrome-unstable/

現在當我ls -l .config/google-chrome-unstable/Default.old得到:

ls: cannot access '.config/google-chrome-unstable/Default.old/TransportSecurity': No such file or directory
total 0
-????????? ? ? ? ?            ? TransportSecurity

此時我重新啟動到單一使用者模式並運行:

umount /home
btrfs check --repair /dev/sdc1

它注意到損壞的目錄並修復了它。您也許可以從那裡開始,但為了完整起見,我將保留我採取的其他步驟。

相關內容