![btrfs:ls 在目录中列出同一文件两次](https://linux22.com/image/109673/btrfs%EF%BC%9Als%20%E5%9C%A8%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%97%E5%87%BA%E5%90%8C%E4%B8%80%E6%96%87%E4%BB%B6%E4%B8%A4%E6%AC%A1.png)
我在 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
它注意到损坏的目录并修复了它。您也许可以从那里开始,但为了完整起见,我将保留我采取的其他步骤。