Como deletar um arquivo chamado “filen / ame” (com barra) em um sistema de arquivos ext4 em debugfs?

25

Jogando com e2fsprogs debugfs , por mudança / acidente, um arquivo chamado filen/ame foi criado. Obviamente, o caractere de barra / serve como o caractere separador especial em nomes de caminho.

Ainda usando debugfs Eu queria remover o arquivo chamado filen/ame , mas tive pouco sucesso, pois o caractere / não é interpretado como parte do nome do arquivo?

O debugfs fornece uma maneira de remover este arquivo que contém a barra? Se sim, como?

Eu usei:

cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs

quais saídas:

debugfs 1.43.4 (31-Jan-2017)
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen/ame

Eu tentei o seguinte para remover o arquivo filen/ame :

debugfs -w -R "rm filen/ame" /tmp/ext4fs

mas isso não funcionou e só foi produzido:

debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename

Além de alterar o conteúdo do nó do diretório manualmente, existe uma maneira de remover o arquivo usando debugfs ?

    
por humanityANDpeace 20.03.2017 / 14:43

3 respostas

33

Se você quer uma correção e não está apenas experimentando debugfs , você pode fazer com que o fsck faça o trabalho para você. Marque o sistema de arquivos como sujo e execute fsck -y para obter o nome do arquivo alterado:

$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
 ...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
 ...
$ debugfs -w -R "ls" /tmp/ext4fs
2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen.ame   
    
por 20.03.2017 / 16:03
3

Congrimulações no trabalho do fsck; Se por alguma razão não funcionar, a resposta é ls -i1 seguido por umount e, em seguida, clri .

Ref: link

Eu realmente testei esse método.

    
por 20.03.2017 / 19:31
-1

Se você mover o arquivo para um diretório, poderá excluir o diretório com o arquivo.

mkdir foo 
mv filen* foo
rm -rf foo
    
por 23.03.2017 / 04:02