Existe alguma maneira de criptografar um diretório usando gpg? Parece aceitar apenas arquivos como argumentos.
Existe alguma maneira de criptografar um diretório usando gpg? Parece aceitar apenas arquivos como argumentos.
Respostas:
Por que não taros arquivos a serem criptografados e depois criptografados o tarball?
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.
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="your-email@host.domain"
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 new-email@host.domaine deve gerar para o /tmpdiretório um arquivo<current-date>_<top-dir-name>.tgz.gpg