Crypter le répertoire avec GnuPG?

10

Existe-t-il un moyen de crypter un répertoire en utilisant gpg? Il semble accepter uniquement les fichiers comme arguments.

Gladimdim
la source
Il existe également des moyens de chiffrer un répertoire ou un lecteur entier, mais leur portée est différente: ils offrent un chiffrement transparent (vous tapez simplement un mot de passe pour monter le lecteur), mais le résultat ne peut pas être lu par GPG ou PGP.
Gilles 'SO- arrête d'être méchant'

Réponses:

11

Pourquoi pas tarles fichiers à chiffrer puis chiffrer l'archive tar?

alex
la source
J'ai trouvé que c'était la solution. Il n'est pas flexible et nécessite beaucoup de ressources pour tarer et gpg date. Merci d'avoir répondu!
gladimdim
@gladimdim: merci d'avoir accepté, mais qu'entendez-vous par "pas flexible" et "beaucoup de ressources"? Ou y avait-il une faute de frappe?
alex
par "pas flexible", je voulais dire que j'avais besoin manuellement du répertoire tar puis de le gpg. J'ai environ 60 Go de photos qui sont maintenant tarballées et gpgées. Il a fallu environ 2 heures et 4 fenêtres de terminal simultanées pour accélérer ce processus. Maintenant, je tarball et gpg chaque nouveau répertoire avec des photos que je crée.
gladimdim
Hm, cela semble assez raisonnable pour cette taille de données. Vous attendiez-vous à l'exécuter beaucoup plus rapidement? Que prévoyez-vous lorsque vous avez besoin d'une de ces photos - décrypter / décompresser tous les 60 Go?
alex
2

Je viens de voir l'option --multifilesur la page de manuel:

Cela modifie certaines autres commandes pour accepter plusieurs fichiers à traiter sur la ligne de commande ou lire à partir de STDIN avec chaque nom de fichier sur une ligne distincte. Cela permet à de nombreux fichiers d'être traités en même temps. --multi‐ fichier peut actuellement être utilisé avec --verify, --encrypt et --decrypt. Notez que --multifile --verify ne peut pas être utilisé avec des signatures détachées.

Ce que vous recherchez spécifiquement est --encrypt-fileset, encore une fois, la page de manuel:

Identique à --multifile --encrypt.

tshepang
la source
1
Merci, cela fonctionne bien, sauf que gpg ne prend pas en charge la clé --multiple avec l'option --symmetric (je veux chiffrer uniquement à l'aide de la phrase secrète).
gladimdim
1

Hé, j'ai lu les commentaires sur la réponse qui a été marquée comme exceptée; il semble que vous devez être conscient de la magie de |(canaux anonymes) vérifiez la réponse que je viens de publier sur le superutilisateur et vous constaterez que tar& gpgpeut être joint de telle sorte que votre sortie soit compressée et chiffrée avant d'être sortie. Notez qu'il utilisera toujours des ressources système importantes, alors vérifiez les manpages de nicecommande pour limiter la capacité d'une commande à ne consommer qu'un certain pourcentage de ressources. Aussi pendant que je suis d'humeur à suggérer des sujets qui peuvent vous faciliter la vie sur la ligne de commande en général; examinez les descripteurs de fichiers et les canaux nommés pour transmettre les données.

Si vous souhaitez voir quel type de magie peut être effectué lorsque les sujets ci-dessus sont compris, consultez les journaux de construction Travis-CI et les scripts associés pour des solutions liées à l'automatisation de GnuPG sur la ligne de commande.

---- Mises à jour

Comme demandé, un exemple de traitement des répertoires peut être trouvé dans le script mentionné précédemment à la ligne 680 et un exemple plus général serait ...

#!/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

... qui peut être exécuté avec script-name.sh /path/to/dirou script-name.sh /path/to/dir [email protected]et devrait sortir dans le /tmprépertoire un fichier<current-date>_<top-dir-name>.tgz.gpg

S0AndS0
la source
Pouvez-vous écrire un exemple?
Nikana Reklawyks
Oui, même si cela peut me prendre un peu :-D
S0AndS0