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 感到困惑的原因,尽管它似乎在每次重新启动之间都工作正常 - 向这个 Local\ State 文件写入了很多内容。然而,当我重新启动它时,它说无法加载本地状态。 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

它注意到损坏的目录并修复了它。您也许可以从那里开始,但为了完整起见,我将保留我采取的其他步骤。

相关内容