Por que não tar
dos arquivos a serem criptografados e depois criptografar o tarball?
Existe alguma maneira de criptografar um diretório usando gpg
? Parece que só aceita arquivos como argumentos.
Acabei de ver a opção --multifile
na página de manual:
This modifies certain other commands to accept multiple files for processing on the command line or read from STDIN with each filename on a separate line. This allows for many files to be processed at once. --multi‐ file may currently be used along with --verify, --encrypt, and --decrypt. Note that --multifile --verify may not be used with detached signatures.
O que você está procurando especificamente é --encrypt-files
e, novamente, a manpage:
Identical to --multifile --encrypt.
Ei, eu li os comentários sobre a resposta que foi marcada como exceção; parece que você deve estar ciente da magia de |
(pipes anônimos) verificar a resposta que acabei de postar em superusuário e você verá que tar
& gpg
pode ser unido juntos, de modo que sua saída seja compactada e criptografada antes de ser enviada. Observe que ainda usará recursos significativos do sistema, portanto, verifique o comando man
pages for nice
para limitar a capacidade de um comando de consumir apenas uma certa porcentagem de recursos. Além disso, enquanto estou com vontade de sugerir tópicos que possam tornar sua vida mais fácil na linha de comando em geral; procure em descritores de arquivos e pipes nomeados para passar os dados.
Se você deseja ver que tipo de magia pode ser realizada quando os assuntos acima são compreendidos, então verifique o Travis-CI cria logs e scripts relacionados para 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 talvez seja executado com script-name.sh /path/to/dir
ou script-name.sh /path/to/dir [email protected]
e deve produzir no diretório /tmp
um arquivo <current-date>_<top-dir-name>.tgz.gpg
Tags directory encryption gpg