Crittografare la directory con GnuPG?


10

Esiste un modo per crittografare una directory utilizzando gpg? Sembra accettare solo file come argomenti.


Esistono anche modi per crittografare un'intera directory o unità, ma hanno un ambito diverso: offrono una crittografia trasparente (basta digitare una password per montare l'unità), ma il risultato non può essere letto da GPG o PGP.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


11

Perché non tari file da crittografare e quindi crittografare il tarball?


Ho trovato questa la soluzione. Non è flessibile e richiede molte risorse per tar e data gpg. Grazie per la risposta!
gladimdim,

@gladimdim: grazie per aver accettato, ma cosa intendi con "non flessibile" e "molte risorse"? O c'era un refuso?
alex

per "non flessibile" intendevo che avevo bisogno manualmente di tar directory e poi di gpg. Ho circa 60 Gb di foto che ora sono tarballate e gpged. Ci sono voluti circa 2 ore e 4 finestre terminali simultanee per accelerare questo processo. Ora ho solo tarball e gpg ogni nuova directory con le foto che creo.
gladimdim,

Hm, sembra un tempo abbastanza ragionevole per quella dimensione di dati. Ti aspettavi di eseguirlo molto più velocemente? Che cosa hai in programma quando ne hai bisogno?
alex

2

Ho appena visto l'opzione --multifilesulla manpage:

Ciò modifica alcuni altri comandi per accettare più file per l'elaborazione sulla riga di comando o leggere da STDIN con ciascun nome file su una riga separata. Ciò consente di elaborare più file contemporaneamente. --multi-file può essere attualmente usato insieme a --verify, --encrypt e --decrypt. Si noti che --multifile --verify non può essere utilizzato con firme separate.

Quello che stai specificamente cercando è --encrypt-filese, di nuovo, la pagina man:

Identico a --multifile --encrypt.


1
Grazie, questo funziona bene, tranne per il fatto che gpg non supporta la chiave --multiple con l'opzione --symmetric (voglio crittografare solo usando la passphrase).
gladimdim,

1

Ehi, ho letto i commenti sulla risposta che è stata contrassegnata come esclusa; Sembra che dovrebbero essere resi consapevoli della magia di |(pipe anonime) verificare la risposta che ho appena postato su superutente e vi accorgerete che tare gpgpuò essere unito insieme in modo tale che l'output è compresso e crittografato prima di essere uscita. Nota che utilizzerà comunque risorse di sistema significative, quindi controlla le manpagine per i nicecomandi per limitare la capacità dei comandi di consumare solo una certa percentuale di risorse. Anche mentre sono in vena di suggerire argomenti che potrebbero semplificarti la vita dalla linea di comando in generale; esaminare i descrittori di file e le pipe denominate per il passaggio dei dati.

Se desideri vedere quale tipo di magia può essere eseguita quando sono compresi i suddetti argomenti, controlla i registri di costruzione di Travis-CI e gli script correlati per le soluzioni relative all'automazione di GnuPG sulla riga di comando.

---- Aggiornamenti

Come richiesto, un esempio per gestire le directory può essere trovato nello script precedentemente citato alla riga 680 e un esempio più generalizzato sarebbe ...

#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="your-email@host.domain"
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

... che può essere eseguito con script-name.sh /path/to/diro script-name.sh /path/to/dir new-email@host.domaine dovrebbe generare nella /tmpdirectory un file<current-date>_<top-dir-name>.tgz.gpg


Puoi scrivere un esempio?
Nikana Reklawyks,

Sì, anche se potrebbe volerci un po '
MrGreen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.