Como faço para destruir apenas a primeira e a última parte de um dispositivo?

1

O comando shred (de coreutils 8.23) sobrescreve um dispositivo com dados configuráveis do início ao fim, o que é perfeitamente adequado para os casos de uso para os quais foi projetado (todos relacionados a gravar algo no dispositivo completo) .

No meu caso, seria suficiente para fazer com que x primeiros bytes e y últimos bytes de um dispositivo que shred faz para o dispositivo inteiro, mas eu não pareço encontrar uma boa solução evitando especificar valor (tamanho do dispositivo, etc.). Eu poderia escrever de uma fonte aleatória para uma parte calculada do dispositivo com dd , mas então eu tenho que pegar o tamanho do dispositivo, lutar com MiB e MB, etc. Talvez haja algo tão confortável quanto shred (ou eu estou apenas perdendo alguma coisa).

A maioria das informações relacionadas ao particionamento (gpt, tabela de partições msdos e backups) é colocada no início e no final de um dispositivo.

    
por Karl Richter 14.02.2015 / 20:01

1 resposta

3

Tem certeza de que o que você realmente quer não é " wipefs - limpar uma assinatura do sistema de arquivos de um dispositivo "?

dd não é tão difícil de usar, especialmente obtendo os números certos de gparted ou fdisk , veja abaixo.

O método de disco inteiro funciona, como em dd if=/dev/zero of=/dev/sdx . Possivelmente com bs=1M para aumentar a velocidade. Ou substitua /dev/zero por / dev / urandom 'para dados mais aleatórios. Como em " Disco de limpeza em segurança do ArchWiki ".

Para apenas um número de partição "n", também conhecido como "sdxn", poderia fazer dd if=/dev/zero of=/dev/sdxn

Para apenas os "primeiros" n MBs, você pode fazer dd if=/dev/zero of=/dev/sdx bs=1M count=n

Para o "início" & "end", você pode descobrir o tamanho do setor da unidade & setores totais - gparted informa isso facilmente, em "Visualizar - > Informações do dispositivo" e até informa onde o início & setores finais são. parted & fdisk (para MBR) também deve.

Em seguida, use um pouco de matemática para descobrir onde limpar.

  • Minúscula (512b) maneira exata - encontre os setores a serem apagados. Se a sua unidade possui setores de 512 bytes, e tem 251658240 setores (é 120GB, = 251658240 setores * 512 bytes / 1024 converta para k / 1024 para M / 1024 para G) ...

    • para limpar o último 1G (gig, G = 1024 * 1024 * 1024 bytes) você poderia descobrir os setores em 1GB (1GB / 512b = 1 * 1024 * 1024 * 1024/512 = 2097152 ), subtraia então do total de setores 251658240 - 2097152 = 249561088 e inicie nesse setor para esses vários setores:
      dd if=/dev/zero of=/dev/sdx bs=512 seek=249561088 count=2097152

  • Você pode converter o bs , seek & count para usar M (M = 1024 * 1024) em vez disso, se for muito lento, passando de 512b por vez. O disco sempre começa em 0, mas termina em 251658240 * 512/1024/1024 = 122880 em M's.

    • Limpe o último 1G Há 1024 M's em um G, então pule para 122880 - 1024 = 121856 M's e faça:
      dd if=/dev/zero of=/dev/sdx bs=1M seek=121856 count=1024

  • Estiamte bruto Gig-at-a-time, funciona bem onde escrever além do "final" não causa danos (no final do disco, não limpando uma partição do meio). Tente 1G (G = 1024 * 1024 * 1024 bytes) de cada vez. Veja man dd para mais informações, entende K, M, G, outros.

    • O último G, dd if=/dev/zero of=/dev/sdx bs=1G seek=119 omitindo count para continuar até o final do dispositivo.

Ou, para uma maneira provavelmente mais rápida de escrever dados "aleatórios" em uma partição / unidade inteira, você pode usar dm-crypt :

First, create a temporary encrypted container on the partition (sdXY) or the full disk (sdX) you want to encrypt, e.g. using default parameters

# cryptsetup open --type plain /dev/sdXY container

Second, check it exists

# fdisk -l
Disk /dev/mapper/container: 1000 MB, 1000277504 bytes
...
Disk /dev/mapper/container does not contain a valid partition table

Finally, wipe it with pseudorandom (encrypted data), a use of /dev/urandom is not required as the encryption cipher is used for randomness:

# dd if=/dev/zero of=/dev/mapper/container
dd: writing to ‘/dev/mapper/container’: No space left on device
    
por 15.02.2015 / 04:47

Tags