Verschlüsseln Sie mehrere Dateien gleichzeitig


10

Ich schreibe ein Skript, das Projektarchive erstellt und anschließend 7z-Archive erstellt, um mir das Speichern bestimmter Versionen und das Verwalten verschlüsselter Sicherungen zu erleichtern.

Nachdem ich die Archive erstellt habe und die Verschlüsselungsphase erreicht habe, möchte ich die Dateien nach gpgMöglichkeit mit einem Aufruf verschlüsseln , damit der Benutzer seine Passphrase nur einmal eingibt. Andernfalls müssten wir entweder die Passphrase des Benutzers im Speicher zwischenspeichern (was ich wirklich nicht tun möchte) oder sie müssen ihre Passphrase für jedes einzelne archivierte Projekt eingeben und bestätigen (was schlimmer ist).

Gibt es eine Möglichkeit, mehrere Dateinamen zu übergeben gpg, damit alle auf einmal verschlüsselt werden?

Wenn ich das versuche:

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

... Ich sehe folgenden Fehler in der Shell:

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

Gibt es eine Möglichkeit, das zu tun, was ich erreichen möchte?


2
Warum verwenden Sie zuerst 7zip (vermutlich) zum Komprimieren und weisen GnuPG dann an, es erneut mit bzip2 zu komprimieren ? Ich sehe nicht, dass Sie dadurch viel Platz sparen, und ich sehe, dass es viel CPU kostet.
Ein Lebenslauf

1
> Gibt es eine Möglichkeit, mehrere Dateinamen an gpg zu übergeben, damit> alle auf einmal verschlüsselt werden? Ja, versuchen Sie diese Antwort
Anchan

Antworten:


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

Nein, da ist kein.

Sie werden wahrscheinlich die Passphrase mit einer der folgenden gpg-Optionen übergeben wollen (letztere wäre die sicherste Wahl):

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

10

Da GnuPG dies nicht direkt unterstützt, besteht die Möglichkeit darin, eine weitere Ebene hinzuzufügen, z tar. B. mit .

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

Und zu extrahieren:

gpg -d projects.gpg | tar x

Sie werden mit project1.7zund verlassen project2.7z. Ihr Skript kann dann dort weitermachen, wo Sie aufgehört haben.


3

Wenn Sie etwas anderes als GPG ausprobieren möchten, gibt es andere Sicherungsmethoden zum Verschlüsseln mehrerer Dateien:

Originalquelle: 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`"
}

Verwendung: Verwenden Sie einfach "backup DIRECTORY" für die Verschlüsselung und "decrypt DIRECTORY.tar.gz.aes".


1

Habe es heute geschafft, so etwas zu tun:

  1. Das Verzeichnis wurde in das Verzeichnis mit den Zieldateien geändert und ein Bash-Skript ausgeführt, um die erforderlichen Dateinamen zu finden und sie in einer von mir aufgerufenen Textdatei aufzulisten found.txt.

  2. Es wurde ein Bash-Skript ausgeführt, in dem gpg2 aufgefordert wurde, jeden Dateinamen in einer Schleife und in eine Speichervariable zu lesen und in derselben Schleife mit meinem Signaturschlüssel zu verschlüsseln und anzugeben, dass er selbst gelesen werden soll. gpg2 zeigt ein Popup zum Eingeben Ihrer Passphrase an. In diesem Popup befindet sich ein kleines Kontrollkästchen, mit dem Sie festlegen können, dass Ihre Passphrase für die Sitzung aktiv bleibt. Schlechte Übung, aber nicht so schlecht, wenn Sie dann nicht im Internet sind und sich sofort nach Ihrer Verschlüsselungssitzung ausschalten.

  3. Das einzige Problem war, dass ay / n behandelt werden musste. Also setzte ich mich mit dem Finger auf die Y-Taste und verschlüsselte 51 nos-Dateien in weniger als einer Minute.


Die Skripte sind unten angegeben:

Das 'find'-Skript war eine Datei mit dem Namen 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       

Das Verschlüsselungsskript hieß 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"

Dies soll als regulärer Benutzer ausgeführt werden:

$ bash ReadFilenameAndEncrypt.sh found.txt

Hoffe das hilft. Ich habe nicht herausgefunden, wie ich das J / N vermeiden kann.


0

Der folgende Befehl funktioniert für mich, solange ich keine Dateinamen mit Leerzeichen darin habe.

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

Sie können auch den Befehl find verwenden.

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

Wenn Sie eine Datei für das Kennwort verwenden möchten, verwenden Sie Folgendes:

--passphrase-file <filename>

-1

Ja, es gibt einen einfachen Weg:

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

-1

echo "Passwort eingeben:"

Passwort lesen

finden . -type f -exec gpg --passphrase $ password -c {} \;

Hmmmmmm GPG fragt mit einer GraphicMessageBox nach einem Passwort für jede Datei.

Daher habe ich mich für CRYBULL (von mir erstelltes Kryptografieprogramm) in C-ANSI entschieden. Sie können kostenlos unter www.labolida.com herunterladen

finden . -type f -exec crybull {} {} .cry $ password encode \;


Bitte versuchen Sie, ausführlichere Antworten zu geben. Außerdem ist diese Frage bereits beantwortet. Lesen Sie die FAQ, um zu erfahren, wie Sie Fragen richtig beantworten können .
Zuazo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.