
O utilitário de comando wipefs Linux pode ser usado para apagar vários tipos de assinaturas de um dispositivo (tabelas de partição, assinaturas de sistema de arquivos, etc…).
Segundo o manual do comando wipefs,
wipefs é uma ferramenta que pode apagar assinaturas do sistema de arquivos, raid ou tabela de partições do dispositivo especificado para fazer as assinaturas invisível para libblkid. wipefs não apaga o sistema de arquivos em si nem quaisquer outros dados do dispositivo.
Quando usado sem nenhuma opção, o wipefs lista todos os arquivos visíveis sistemas de arquivos e os deslocamentos de suas assinaturas básicas.
Ele está disponível no repositório de todas as distribuições Linux mais usadas e geralmente é instalado por padrão como parte do pacote util-linux, que também contém outros utilitários essenciais para a manutenção do sistema, portanto, nunca devemos instalá-lo explicitamente.
Por padrão, o comando wipefs Linux funciona apenas em dispositivos não montados e se recusará a remover assinaturas de um dispositivo que esteja em uso.
Exibindo Assinaturas de partições ou Discos
Wipefs pode ser usado não apenas para apagar assinaturas existentes em um dispositivo, mas também para criar um relatório que as inclua sem realizar nenhuma modificação.
Para exibir as assinaturas basta apenas executar wipefs + dispositivo. Por exemplo, para vermos as assinaturas do disco /dev/sdb
maria@debian11VM:~$ sudo wipefs /dev/sdb DEVICE OFFSET TYPE UUID LABEL sdb 0x1fe dos
A saída é organizada em colunas que, por padrão, relatam informações sobre:
- sdb é o dispositivo em bloco
- 0x1fe é o OFFSET da assinatura
- dos é o tipo da assinatura
Esse dispositivo está sem uuid e label. Podemos inserir um label se quisermos. O uuid é concedido automaticamente e é um identificador único para o dispositivo.
Ainda neste caso, o que o utilitário wipefs mostra é a assinatura da tabela de partições dos encontrada no dispositivo. Como você pode ver, o deslocamento da assinatura é expresso na forma hexadecimal (base 16). O valor 0x1fe corresponde a 510 bytes.
Vendo e Usando Algumas Opções do Comando wipefs
Para ver a ajuda(help) basta digitar wipefs –help
Uso: wipefs [opções] <dispositivo> Apaga assinaturas de um dispositivo. Opções: -a, --all apaga todos os textos mágicos (TENHA CUIDADO!) -b, --backup cria uma assinatura backup em $HOME -f, --force força o apagamento -i, --noheadings não exibe os cabeçalhos -J, --json usa o formato de saída JSON -n, --no-act faz tudo, exceto a real chamada de write() -o, --offset <núm> posição para apagar, em bytes -O, --output <lista> COLUNAS para exibir (ver abaixo) -p, --parsable exibe em formato analisável ao invés de imprimível -q, --quiet suprime as mensagens de saída -t, --types <lista> limita o conjunto de sistemas de arquivos, RAIDs ou tabelas de partição --lock[=<modo>] usa trava exclusiva de dispositivo (yes, no ou nonblock) -h, --help exibe esta ajuda e sai -V, --version exibe a versão Argumentos: Os argumentos de <núm> podem ser seguidos pelos sufixos para GiB, TiB, PiB, EiB, ZiB e YiB (o "iB" é opcional) Colunas de saída disponíveis: UUID UUID do sistema de arquivos/da partição LABEL LABEL do sistema de arquivos LENGTH comprimento de string mágica TYPE tipo de superbloco OFFSET posição de string mágica USAGE descrição de tipo DEVICE nome de dispositivo de bloco Para mais detalhes, veja wipefs(8).
Olhando para a parte final do texto acima podemos ver podemos alterar as colunas do resultado na exibição das assinaturas; por exemplo, para termos apenas uma saída(output) com colunas DEVICE,OFFSET,USAGE fazemos assim:
$ sudo wipefs --output DEVICE,OFFSET,USAGE /dev/sda
Se quisermos ainda podemos ter uma saída em formato json usando -J
$ sudo wipefs -J --output DEVICE,OFFSET,USAGE /dev/sda { "signatures": [ {"device":"sda", "offset":"0x1fe", "usage":"partition-table"} ] }
Outra coisa, você pode ter notado, wipefs não funciona recursivamente, ou seja, se usarmos com sda o wipefs não checará as partições desse dispositivo; não checará por sda1, sda2… Para que isso ocorra podemos inserir um * ao final,
$ sudo wipefs /dev/sda*
Apagando Assinaturas de Dispositivos com wipefs
Acabamos de ver como, quando invocado sem opções específicas, o wipefs apenas exibe as assinaturas encontradas. Para poder apagá-los de fato, podemos proceder de três maneiras. Se quisermos remover todas as assinaturas, podemos invocar o utilitário com a opção correspondente (-a ou –all). Para apagar todas as assinaturas em /dev/sda, executaríamos:
$ sudo wipefs -a /dev/sda*
Se quisermos remover uma assinatura específica, temos que usar a opção -o, que é a abreviação de –offset e passar o deslocamento da assinatura como argumento. Por padrão, o número usado para o deslocamento é interpretado como bytes, porém, se incluir o prefixo 0x, é interpretado como um valor hexadecimal. É até possível usar sufixos comuns para especificar como o argumento deve ser interpretado, por exemplo KiB, MiB, GiB e assim por diante. Vejamos um exemplo. Para remover apenas a primeira assinatura encontrada em /dev/sda, que possui o valor de deslocamento 0x1fe, executaríamos:
$ sudo wipefs -o 0x1fe /dev/sda
O comando deve retornar a seguinte saída:
/dev/sda: 2 bytes were erased at offset 0x000001fe (dos): 55 aa /dev/sda: calling ioctl to re-read partition table: Success
Um terceiro método para excluir assinaturas específicas é selecioná-las por seu tipo, que pode ser especificado usando a opção -t (–types). A opção aceita uma lista separada por vírgulas como argumento. Para deletar todas as assinaturas do tipo “dos”, por exemplo, escreveríamos:
$ sudo wipefs -a -t dos /dev/sda
Executando um “dry run” com wipefs
Se quisermos verificar como os wipefs se comportariam, mas não quisermos realmente remover as assinaturas, podemos realizar uma “simulação”(dry run) usando o utilitário com a opção -n (–no-act). Conforme declarado no manual, usar esta opção fará com que tudo seja feito, exceto a gravação final.
Criando um backup antes de apagar as assinaturas com wipefs
Criar backups é sempre uma boa ideia, especialmente ao realizar operações perigosas como neste caso. O utilitário wipefs possui uma opção dedicada que faz com que um backup de cada assinatura seja criado em um arquivo criado usando o seguinte caminho de modelo: $HOME/wipefs–.bak
Cada assinatura é armazenada em seu próprio arquivo. Para criar um backup de todas as assinaturas em /dev/sda, por exemplo, escreveríamos:
$ sudo wipefs --all --backup /dev/sda*
Os arquivos que seriam criados, neste caso, são /root/wipefs-sda-0x000001fe.bak. Observe que a opção –backup pode ser invocada apenas ao executar uma exclusão real, caso contrário, o utilitário nos notificará que a operação é “sem sentido” no contexto. Os backups criados podem ser facilmente restaurados usando dd. Para restaurar a assinatura neste exemplo, executaríamos:
$ sudo dd if=/root/wipefs-sda-0x000001fe.bak of=/dev/sda seek=$((0x000001fe)) bs=1
No comando acima, com se especificamos o arquivo de entrada, que neste caso é o arquivo que contém o backup da assinatura, com, em vez disso, fornecemos o output_file (/dev/sda), e estabelecemos onde os dados devem ser gravados. Com seek especificamos o deslocamento que deve ser usado: os dados devem ser fornecidos em bytes, portanto, para converter o valor hexadecimal, usamos a expansão aritmética do shell ($(())) . Por fim, com bs especificamos a quantidade de bytes que dd deve ler e escrever por vez.
Bom, é isso!