Criptografar diretório com o GnuPG?

10

Existe alguma maneira de criptografar um diretório usando gpg? Parece aceitar apenas arquivos como argumentos.

gladimdim
fonte
Também existem maneiras de criptografar um diretório ou unidade inteira, mas são de escopo diferente: oferecem criptografia transparente (basta digitar uma senha para montar a unidade), mas o resultado não pode ser lido pelo GPG ou PGP.
Gilles 'SO- stop be evil'

Respostas:

11

Por que não taros arquivos a serem criptografados e depois criptografados o tarball?

alex
fonte
Eu achei que essa era a solução. Não é flexível e requer muitos recursos para data de tar e gpg. Obrigado pela resposta!
gladimdim
@gladimdim: obrigado por aceitar, mas o que você quer dizer com "não flexível" e "muitos recursos"? Ou houve um erro de digitação?
alex
por "não flexível", quis dizer que eu precisava manualmente do diretório tar e gpg ele. Eu tenho cerca de 60 GB de fotos que agora estão com tarball e gpged. Demorou cerca de 2 horas e 4 janelas de terminal simultâneas para acelerar esse processo. Agora eu apenas tarball e gpg a cada novo diretório com fotos que eu crio.
precisa saber é o seguinte
Hum, parece um tempo bastante razoável para esse tamanho de dados. Você esperava executá-lo muito mais rápido? O que você planeja quando precisa de uma dessas fotos - descriptografar / desarmar todos os 60Gigs?
alex
2

Acabei de ver a opção --multifilena página de manual:

Isso modifica certos outros comandos para aceitar vários arquivos para processamento na linha de comando ou ler de STDIN com cada nome de arquivo em uma linha separada. Isso permite que muitos arquivos sejam processados ​​ao mesmo tempo. No momento, o arquivo --multi‐ pode ser usado junto com --verify, --encrypt e --decrypt. Observe que --multifile --verify não pode ser usado com assinaturas desanexadas.

O que você está procurando especificamente é --encrypt-filese, novamente, a página de manual:

Idêntico ao --multifile --encrypt.

tshepang
fonte
1
Obrigado, isso funciona bem, exceto que o gpg não suporta --multiple key com a opção --symmetric (eu quero criptografar apenas usando a senha).
gladimdim
1

Ei, eu li os comentários na resposta que foi marcada como excetuada; Parece que você deve estar ciente da magia de |(tubos anônimos). Verifique a resposta que eu acabei de postar no superusuário e você descobrirá que tar& gpgpode ser unido de forma que sua saída seja compactada e criptografada antes da saída. Observe que ele ainda usará recursos significativos do sistema, portanto verifique as manpáginas em busca de nicecomandos para limitar a capacidade dos comandos de consumir apenas uma certa porcentagem de recursos. Além disso, enquanto estou com vontade de sugerir tópicos que podem facilitar sua vida na linha de comando em geral; procure descritores de arquivos e pipes nomeados para transmitir dados.

Se você deseja ver que tipo de mágica pode ser executada quando os assuntos acima forem compreendidos, verifique os logs de criação do Travis-CI e scripts relacionados para obter soluções relacionadas à automação do GnuPG na linha de comando.

---- Atualizações

Conforme solicitado, um exemplo para lidar com diretórios pode ser encontrado no script mencionado anteriormente na linha 680 e um exemplo mais generalizado seria ...

#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="[email protected]"
gpg_email="${2:-$default_gpg_email}"
_dir_name="${dir_path##*/}"
_dir_name="${_dir_name%/*}"
Var_star_date="$(date -u +%s)"

if [ -d "${dir_path}" ]; then
    tar -cz - "${dir_path}" | gpg --always-trust --armor --batch --no-tty --encrypt --recipient ${gpg_email} > /tmp/${Var_star_date}_${_dir_name}.tgz.gpg"
else
    echo "${0##*/} operates on directories"
    exit 1
fi

... que pode ser executado com script-name.sh /path/to/dirou script-name.sh /path/to/dir [email protected]e deve gerar para o /tmpdiretório um arquivo<current-date>_<top-dir-name>.tgz.gpg

S0AndS0
fonte
Você pode escrever um exemplo?
Nikana Reklawyks
Sim, embora isso possa me levar um pouco :-D
S0AndS0