criptografia GPG com exclusão gradual em paralelo

1

Digamos que eu tenha um arquivo de 100 GB que eu quero criptografar com GPG em um sistema com 120 GB de memória de disco rígido e uma pequena RAM.

Como posso descriptografar o arquivo sem usar uma memória externa, isto é, gpg criptografar um arquivo e, gradualmente, excluir a versão não criptografada em paralelo?

    
por user123456 09.12.2016 / 17:22

1 resposta

2

Cuidado: e se você excluir parte de um arquivo e o processo for interrompido no meio?

O espaço em disco é barato, então quase não há sentido em tentar economizar espaço em disco dessa maneira.

Se você realmente tiver que fazer isso, minha recomendação é processar o arquivo em partes. Pegue um trecho, criptografe-o e exclua essa parte do arquivo original. Em seguida, processe o próximo pedaço e assim por diante. Dessa forma, se o processo for interrompido, você poderá remover o fragmento criptografado não concluído e retomar o processo. Com essa abordagem, é mais fácil processar o arquivo do final para o começo.

Aviso: código não testado. Assume utilitários GNU ou BusyBox (por exemplo, Linux) e um shell de 64 bits (para lidar com tamanhos de arquivo acima de 2 GB).

#!/bin/sh
set -e
input_size=$(stat -c %s myfile)
fragment_size=$((1024*1024*1024))
while [ "$input_size" -gt 0 ]; do
  chunk_size=$((input_size % fragment_size)) || chunk_size=$fragment_size
  input_size=$((input_size - fragment_size))
  fragment_name=$(printf fragment-%08d "$((input_size / fragment_size))")
  tail -c "$((input_size+1))" myfile | gpg -e >"$fragment_name.gpg.tmp"
  mv "$fragment_name.gpg.tmp" "$fragment_name.gpg"
  truncate -s "$input_size" myfile
done
    
por 11.12.2016 / 01:28