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 tar
os arquivos a serem criptografados e depois criptografados o tarball?
Acabei de ver a opção --multifile
na 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-files
e, 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
& gpg
pode 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 man
páginas em busca de nice
comandos 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/dir
ou script-name.sh /path/to/dir new-email@host.domain
e deve gerar para o /tmp
diretório um arquivo<current-date>_<top-dir-name>.tgz.gpg