Cifre varios archivos a la vez


10

Estoy escribiendo un script que crea archivos de proyecto y luego crea archivos 7z de ellos para que sea más fácil para mí guardar versiones específicas y mantener copias de seguridad cifradas.

Después de generar los archivos y llegar a la fase de cifrado, me gustaría cifrar los archivos con una sola llamada, gpgsi es posible, para que el usuario solo ingrese su frase de contraseña una vez. De lo contrario, tendríamos que guardar en caché la frase de contraseña del usuario en la memoria (lo que realmente me gustaría no hacer) o hacer que ingresen y confirmen su frase de contraseña para cada proyecto archivado (lo que es peor).

¿Hay alguna manera de pasar varios nombres de archivo para gpgque los cifre todos de una vez?

Si intento esto:

$ gpg --cipher-algo AES256 --compression-algo BZIP2 -c project1.7z project2.7z

... veo el siguiente error en el shell:

usage: gpg [options] --symmetric [filename]

¿Hay alguna manera de hacer lo que estoy buscando lograr?


2
¿Por qué usas primero 7zip (presumiblemente) para comprimir, y luego le dices a GnuPG que comprima nuevamente usando bzip2? No veo que eso te gane mucho en términos de eficiencia de espacio, y sí veo que cuesta una buena cantidad de CPU.
un CVn

1
> ¿Hay alguna manera de pasar múltiples nombres de archivos a gpg para que los cifre> todos de una vez? Sí, intente esta respuesta
Anchan

Respuestas:


5
Is there a way to pass multiple filenames to gpg to have it encrypt all of
them in one go?

No no hay.

Es probable que desee pasar la frase de contraseña con una de las siguientes opciones de gpg (esta última sería la opción más segura):

--passphrase
--passphrase-file
--passphrase-fd

10

Dado que GnuPG no admite esto directamente, la forma de hacerlo sería agregar otra capa, por ejemplo, usando tar.

tar c project1.7z project2.7z | gpg --cipher-algo AES256 --compression-algo BZIP2 -co projects.gpg

Y para extraer:

gpg -d projects.gpg | tar x

Te quedarás con project1.7zy project2.7z. Su guión puede continuar donde lo dejó.


3

Si quieres probar algo más, GPG hay otros métodos de respaldo para encriptar múltiples archivos:

fuente original: http://www.obsd.hu/docs/Unix-backup-with-aes.txt

vi ~/.bashrc

backup() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'Did you do a screenshot of the Desktop and backup all the Bookmarks of the webbrowser and backup cronjobs, etc...?'
read
echo "START: `date`"
ORIGDIR="$1"; ORIGDIRNORM="`echo $ORIGDIR | sed 's/\/$//g'`"; tar cvf - "${ORIGDIRNORM}/" 2>/dev/null | gzip -9 - 2>/dev/null | openssl aes-256-cbc -salt -out "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" && cksum "${ORIGDIRNORM}-backup-${CURRENTDATE}.tar.gz.aes" >> checksum.txt
echo "END: `date`"
}

decrypt() {
if [[ "$1" = "" ]]; then echo 'specify full path' && exit 1; fi
CURRENTDATE="`date +%F-%Hh`"
echo 'This will decrypt the backup in the current working directory, are you sure?'
read
echo "START: `date`"
ORIGDIR="$1"
openssl aes-256-cbc -d -salt -in "${ORIGDIR}" | tar -xz -f -
echo "END: `date`"
}

Uso: simplemente use "DIRECTORIO de respaldo" para el cifrado y "descifre el DIRECTORIO.tar.gz.aes"


1

Hoy he logrado hacer algo como esto:

  1. Cambié el directorio al directorio que contiene los archivos de destino, y ejecuté un script Bash para encontrar los nombres de archivo necesarios y enumerarlos en un archivo de texto al que llamé found.txt.

  2. Ejecuté un script Bash pidiéndole a gpg2 que leyera cada nombre de archivo en un bucle y en una variable de memoria, y en el mismo bucle para encriptarlo usando mi clave de firma y especificando que era para leer por mí mismo. gpg2 muestra una ventana emergente para poner su frase de contraseña, que tiene una pequeña casilla de verificación donde puede optar por mantener su frase de contraseña activa para la sesión. Mala práctica, pero no es tan mala si no está en la red y se apaga inmediatamente después de la sesión de cifrado.

  3. El único problema era que había que manejar un ay / n. Así que me senté con mi dedo en la tecla Y y cifré 51 archivos nos en menos de un minuto.


Los guiones se dan a continuación:

El script 'find' era un archivo llamado FindFilesAndListtoTextfile.sh:

#! /usr/bin/bash
#Try this to list the files you want using the appropriate file identifier i.p.o "DSCN.*":

source="/home/myself/Whatever  #note no gaps on either side of the equal-to sign 
 target="/home/myself/Whatever/found.txt"
 find $source -name "*DSCN*" -type f > $target       

El script de cifrado se llamaba ReadFilenameAndEncrypt.sh:

#!/bin/bash
line="/home/myself/Whatever/found.txt"
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
    gpg2 -e -u mysecretkeyID -r mysecretkeyID "$line"
  done < "$1"

Esto se debe ejecutar como un usuario normal:

$ bash ReadFilenameAndEncrypt.sh found.txt

Espero que esto ayude. No he descubierto cómo evitar la y / n.


0

El siguiente comando funciona para mí siempre que no tenga ningún nombre de archivo con espacios en ellos.

for file in $(ls | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

También puede usar el comando find también.

for file in $(find /home -type f | grep -v ".gpg"); do gpg -c --cipher-algo AES256 --compress-algo 1 --batch --passphrase "<password>" $file && rm -f $file; done

Por último, si desea usar un archivo para la contraseña, use:

--passphrase-file <filename>

-1

Sí, hay una manera fácil:

for x in *; do 
  gpg -r (yourencrytionkey.com) -o $x.pgp -e $x
done

-1

echo "Ingrese una contraseña:"

leer contraseña

encontrar . -tipo f -exec gpg --passphrase $ contraseña -c {} \;

Hmmmmmm GPG pide con GraphicMessageBox una contraseña para cada archivo.

Entonces, decidí usar CRYBULL (programa de criptografía que creé) en C-ANSI. Puede descargarlo gratis en www.labolida.com

encontrar . -tipo f -exec crybull {} {} .cry $ contraseña codificar \;


Por favor, trate de hacer respuestas más elaboradas. Además, esta pregunta ya está respondida. Lea las preguntas frecuentes para aprender sobre cómo responder preguntas correctamente .
zuazo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.