Executando verificação de segurança...
6

LINUX - Apagando arquivos a partir do número inode

Por descuido, acabei criando arquivos cujos nomes começam com um caractere especial, o que dificulta para os inexperientes sua remoção com o comando rm. Na man page do utilitário rm é abordado um exemplo, indicando a solução:

To remove a file whose name starts with a '-', for example '-foo', use one of these commands:
$ rm -- -foo
$ rm ./-foo

No exemplo, a opção "./-foo" é uma forma de desambiguação para que o elemento -foo não seja interpretado por rm como uma opção por estar precedido por -.

Os mais experimentes com a CLI (Command Line Interface) conhecem diversas maneiras para remoção desses arquivos indesejados, principalmente quando outros caracteres especiais precedem o nome dos mesmos.

Remoção dos arquivos do diretório corrente

Modo verboso para apagar, incluindo os arquivos ocultos do usuário
$ rm -v ./* .*

Modo interativo

Modo verboso e interativo para apagar, incluindo os arquivos ocultos do usuário
$ rm -iv ./* ./.*

Via inode (index node) do arquivo

Por meio do número de inode do arquivo, o utilitário find realiza a operação, definida por -delete, fazendo a remoção do arquivo correspondente ao inode indicado (certifique-se do que realmente está fazendo!):

$ find . -inum <inode> -delete

O número inode pode ser obtido com o utilitário stat -c "%i %n" * .* ou simplesmente com ls -ail:

$ ls -ail
total 1180
1402 drwxrwxr-x  2 usr usr    180 out 17 05:53  .
1208 drwxrwxr-x 13 usr usr    640 out 15 10:02  ..
 700 -rw-rw-r--  1 usr usr      0 out 17 05:53 '.\$'
 699 -rw-rw-r--  1 usr usr      0 out 17 05:53 '$'
 380 -rw-rw-r--  1 usr usr      0 out 17 05:52  .-file
 688 -rw-rw-r--  1 usr usr      0 out 17 05:52 '.\-file'
1403 -rw-rw-r--  1 usr usr 867148 out 15 10:02  NotoEmoji-Bold.ttf

Exemplo (!!muita atenção para informar o inode correto do arquivo!! Doutra forma, apagará um arquivo existente na partição com inode especificado):

$ find . -inum 688 -delete && echo "Arquivo removido" || echo "Falha na remoção do arquivo"

O inode é uma estrutura de dados que armazena metadados sobre um arquivo ou diretório. Cada arquivo ou diretório no sistema de arquivos ext4 possui um inode exclusivo associado a ele, que contém informações essenciais sobre o arquivo.

debugfs

É um utilitário mais avançado e seu uso geralmente requer privégios de superusuário.

dd

Não seria por menos ter sido apelidado como acrônimo para "disk destroyer" face ao poder deste utilitário encontrado nos sistemas Linux. O dd, algumas vezes referido como “data definition”, “disk dump”, ou "disk duplicator" dá ao usuário alguns poderes para inspecionar bem como escrever diretamente em diversos dispositivos do sistema. Certas operações, porém, podem exigir privilégios de super usuário. Quando uma operação de escrita em disco é realizada com esse utilitário, algumas vezes considerada de baixo nível, há grande risco de perda/corrupção de dados bem como partições caso seja utilizado incorretamente. Desta forma, não será apresentada receita qualquer aqui, mas a ideia para os mais curiosos (inteiramente responsáveis por qualquer efeito destrutivo que causar com seus achados sobre esta ferramenta).

Deve-se lembrar que um inode não é um id para um setor, mas um identificador de nodo de uma estrutura.


Caso a remoção do conteúdo do arquivo também deva ser permanente, o utilitário shred é capaz de tornar praticamente irrecuperável o arquivo após sua remoção. Certifique-se do que realmente está realizando!

[Keywords: debugfs, ext4, linux filesystem, inode] // for [index|filter]ing purposes

Carregando publicação patrocinada...