Cifrar directorio con GnuPG?

10

¿Hay alguna forma de encriptar un directorio usando gpg? Parece que solo acepta archivos como argumentos.

gladimdim
fuente
También hay formas de encriptar un directorio o unidad completa, pero su alcance es diferente: ofrecen encriptación transparente (solo tiene que escribir una contraseña para montar la unidad), pero GPG o PGP no pueden leer el resultado.
Gilles 'SO- deja de ser malvado'

Respuestas:

11

¿Por qué no tarencriptar los archivos y luego encriptar el tarball?

alex
fuente
Encontré que esta es la solución. No es flexible y requiere muchos recursos para tar y gpg date. ¡Gracias por la respuesta!
gladimdim
@gladimdim: gracias por aceptar, pero ¿qué quiere decir con "no flexible" y "gran cantidad de recursos"? ¿O hubo un error tipográfico?
alex
por "no flexible" quise decir que necesitaba un directorio tar manualmente y luego gpg. Tengo alrededor de 60 Gb de fotos que ahora están cubiertas de tarbal y gpged. Se necesitaron aproximadamente 2 horas y 4 ventanas de terminal concurrentes para acelerar este proceso. Ahora solo tarball y gpg cada nuevo directorio con fotos que creo.
gladimdim
Hm, eso parece un tiempo bastante razonable para ese tamaño de datos. ¿Esperabas ejecutarlo mucho más rápido? ¿Qué planeas cuando necesitas una de esas fotos: descifrar / descomprimir todos los 60Gigs?
alex
2

Acabo de ver la opción --multifileen la página de manual:

Esto modifica ciertos otros comandos para aceptar múltiples archivos para procesar en la línea de comandos o leer desde STDIN con cada nombre de archivo en una línea separada. Esto permite que se procesen muchos archivos a la vez. --multi‐ file puede usarse actualmente junto con --verify, --encrypt y --decrypt. Tenga en cuenta que --multifile --verify no se puede usar con firmas separadas.

Lo que está buscando específicamente es --encrypt-filesy, nuevamente, la página de manual:

Idéntico a --multifile --encrypt.

tshepang
fuente
1
Gracias, esto funciona bien, excepto que gpg no admite --multiple key with --symmetric option (Quiero encriptar solo usando frase de contraseña).
gladimdim
1

Hola, leí los comentarios sobre la respuesta que se ha marcado como exceptuada; Parece que deben ser conscientes de la magia de |(tubos anónimos) comprobar la respuesta que acaba de publicar en superusuario y encontrará que tarY gpgpuede ser unido juntos de tal manera que su salida se comprime y encripta antes de la salida. Tenga en cuenta que todavía usará recursos significativos del sistema, así que revise las manpáginas para ver los nicecomandos para limitar la capacidad de los comandos de consumir solo un cierto porcentaje de recursos. Además, mientras estoy de humor para sugerir temas que pueden facilitarle la vida en la línea de comandos en general; mire los descriptores de archivo y las canalizaciones con nombre para pasar datos.

Si desea ver qué tipo de magia se puede realizar cuando se entienden los temas anteriores, consulte los registros de compilación de Travis-CI y los scripts relacionados para encontrar soluciones relacionadas con la automatización de GnuPG en la línea de comandos.

---- Actualizaciones

Según lo solicitado, se puede encontrar un ejemplo para tratar con directorios dentro del script mencionado anteriormente en la línea 680 y un ejemplo más general sería ...

#!/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 tal vez se ejecute con script-name.sh /path/to/diro script-name.sh /path/to/dir [email protected]y debería enviar al /tmpdirectorio un archivo<current-date>_<top-dir-name>.tgz.gpg

S0AndS0
fuente
¿Puedes escribir un ejemplo?
Nikana Reklawyks
Sí, aunque me puede tomar un poco :-D
S0AndS0