Existe-t-il un moyen de crypter un répertoire en utilisant gpg
? Il semble accepter uniquement les fichiers comme arguments.
Existe-t-il un moyen de crypter un répertoire en utilisant gpg
? Il semble accepter uniquement les fichiers comme arguments.
Réponses:
Pourquoi pas tar
les fichiers à chiffrer puis chiffrer l'archive tar?
Je viens de voir l'option --multifile
sur 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-files
et, encore une fois, la page de manuel:
Identique à --multifile --encrypt.
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
& gpg
peut ê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 man
pages de nice
commande 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="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
... qui peut être exécuté avec script-name.sh /path/to/dir
ou script-name.sh /path/to/dir new-email@host.domain
et devrait sortir dans le /tmp
répertoire un fichier<current-date>_<top-dir-name>.tgz.gpg