Criptografa o diretório com o GnuPG?

8

Existe alguma maneira de criptografar um diretório usando gpg ? Parece que só aceita arquivos como argumentos.

    
por gladimdim 18.01.2011 / 20:44

3 respostas

10

Por que não tar dos arquivos a serem criptografados e depois criptografar o tarball?

    
por 19.01.2011 / 07:39
2

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.

    
por 18.01.2011 / 20:55
1

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

    
por 21.11.2016 / 22:14