No Linux, você pode usar fallocate
para "furar" um arquivo, ou seja, descartar alguns dos blocos de dados. Requer um sistema de arquivos ext4, XFS ou btrfs (ou tmpfs).
$ perl -e 'print "a" x 16384' > foo
$ ls -sl foo
16 -rw-r--r-- 1 foo foo 16384 Oct 18 13:12 foo
$ fallocate -p -o0 -l 8192 foo
$ ls -sl foo
8 -rw-r--r-- 1 foo foo 16384 Oct 18 13:12 foo
Outros sistemas podem ou não ter recursos similares, mas acho que as únicas chamadas de sistema portáteis relacionadas a isso são posix_fallocate
e truncate
que realmente não ajudam você desde o primeiro só pode reservar um novo espaço para o arquivo, e o segundo só permite truncar um arquivo do final .
Em qualquer caso, você precisa preparar um programa para, por exemplo, canalize o arquivo de entrada para openssl
e descarte as partes do arquivo que já foram lidas (mas não as outras). Não é tão difícil de implementar em qualquer linguagem de programação, mas também não é muito seguro, já que um acidente provavelmente deixaria você com peças inutilizáveis.
Não sei se algum utilitário de criptografia de disco completo pode criptografar uma partição no local.
Além disso, relacionado: Acrescente arquivos enormes uns aos outros sem copiá-los