Esiste un modo per crittografare una directory utilizzando gpg
? Sembra accettare solo file come argomenti.
Esiste un modo per crittografare una directory utilizzando gpg
? Sembra accettare solo file come argomenti.
Risposte:
Perché non tar
i file da crittografare e quindi crittografare il tarball?
Ho appena visto l'opzione --multifile
sulla 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-files
e, di nuovo, la pagina man:
Identico a --multifile --encrypt.
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 tar
e gpg
può 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 man
pagine per i nice
comandi 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/dir
o script-name.sh /path/to/dir new-email@host.domain
e dovrebbe generare nella /tmp
directory un file<current-date>_<top-dir-name>.tgz.gpg