Como deletar uma entrada de diretório (arquivo) que não tenha nenhum inode?

1

Deve ser uma das esquisitices que não consigo entender, que usando chromium navegador, de tempos em tempos me rende um arquivo inode -less chamado Preferences .

Se eu fizer isso no terminal:

$> ls -i ~/.config/chromium/Default/ | grep Preferences

Eu recebo esta saída

ls: cannot access '~/.config/chromium/Default/Preferences': No such file or directory
       ? Preferences
10551098 Secure Preferences

A saída mostra na primeira linha que o arquivo não existe, mas ainda está aparecendo como uma entrada do diretório na segunda linha. A terceira linha só aparece porque, como acontece, há também as preferências do grep que também filtram essa entrada.

A questão, como afirmado no título agora é principalmente: "como excluo essa entrada de diretório"?

Algumas informações adicionais: os / distro Current Arch Linux, sistema de arquivos: btrfs.

No passado, eu inicializei a partir de um pendrive live-usb e executei btrfs check com as respectivas flags, que encontraram o problema e o resolveram. No entanto, agora eu não tenho essa unidade pronta. E, portanto, eu estaria mais interessado em diferentes maneiras de limpar uma entrada de diretório, que não tem mais nenhum inode associado.

Talvez o btrfs possa fazer isso "on-line"?

    
por humanityANDpeace 12.12.2017 / 15:02

1 resposta

1

Infelizmente, a única maneira de fazer isso agora no BTRFS é offline com btrfs check . Houve alguma discussão no passado sobre a inclusão de provisões para lidar com isso, mas não foi realmente a lugar algum (pelo menos, não publicamente, não tenho ideia do que qualquer desenvolvedor arbitrário possa estar trabalhando).

No entanto, existem algumas alternativas um pouco mais complicadas para fazer isso offline com uma unidade USB, como:

  1. Se você estiver usando o initramfs e o Systemd, será possível dizer ao systemd para parar o processo de inicialização antes de montar o sistema de arquivos raiz real e soltar-se em um shell. Infelizmente eu não me lembro como fazer isso (eu não uso systemd eu mesmo, então isso nunca acontece para mim), mas pode ser a opção mais fácil se você puder descobrir, porque isso lhe dará um ( principalmente) ambiente completo para recuperação do sistema.
  2. Geralmente, é possível configurar uma cópia local de um sistema Live USB ou Live CD no disco rígido. Esta é a abordagem que eu tomo, extraindo os arquivos relevantes de um SystemRescueCD ISO e soltando-os na minha partição de inicialização (e em meu caso atualizando o gerenciador de inicialização com uma entrada, embora se você usar o os-prober que deve pegá-lo automaticamente). O conjunto exato de arquivos varia de acordo com o sistema Live, mas para o SystemRescueCD você precisa de um dos kernels, a imagem initramfs, sysrcd.dat e sysrcd.md5.
  3. Se você tiver algum tempo e paciência para mantê-lo atualizado, você pode usar o Buildroot ou ferramentas semelhantes para criar um imagem que pode ser carregada diretamente por um gerenciador de inicialização e é executada inteiramente a partir da RAM, independentemente do resto do sistema. Você pode agrupar em qualquer ferramenta de recuperação que você quiser (como btrfs-progs), e inicializar quando precisar fazer coisas como essa (isso requer o máximo de esforço, mas usa menos espaço que a opção 2 e é mais confiável que a opção 1 ).
  4. Em algumas distros, você pode criar uma partição raiz de backup com muita facilidade que contenha as coisas necessárias para corrigir a principal. Isso pode ficar realmente envolvido, e não é a coisa mais fácil de se manter atualizada. O Debian e o Gentoo tornam isso realmente fácil (o Debian tem ferramentas para a configuração inicial, e pode executar atualizações de forma confiável em um chroot, o Gentoo é simplesmente trivial para fazer coisas assim, e nem precisa de um chroot para atualizações pode apontar emerge em um diretório arbitrário para tratar como um diretório raiz)).
por 12.12.2017 / 21:29