Зашифровать каталог с помощью GnuPG?

10

Есть ли способ зашифровать каталог с помощью gpg? Кажется, он принимает файлы только в качестве аргументов.

gladimdim
источник
Существуют также способы шифрования всего каталога или диска, но они различаются по объему: они предлагают прозрачное шифрование (вы просто вводите пароль для монтирования диска), но результат не может быть прочитан GPG или PGP.
Жиль "ТАК - перестань быть злым"

Ответы:

11

Почему бы не tarзашифровать файлы, а затем зашифровать тарбол?

Алекс
источник
Я нашел это, чтобы быть решением. Он не гибкий и требует много ресурсов для tar и gpg date. Спасибо за ответ!
gladimdim
@gladimdim: спасибо, что согласились, но что вы подразумеваете под "негибким" и "большим количеством ресурсов"? Или там была опечатка?
Алекс
под "негибким" я имел в виду, что мне нужно вручную каталог tar, а затем gpg. У меня есть около 60 ГБ фото, которые теперь отмечены и gpged. Для ускорения этого процесса потребовалось около 2 часов и 4 одновременных окон терминала. Теперь я просто tarball и gpg каждый новый каталог с фотографиями, которые я создаю.
gladimdim
Хм, это довольно разумное время для такого размера данных. Вы ожидали запустить его намного быстрее? Что вы планируете, когда вам нужны эти картинки - расшифровать / распаковать все 60Gigs?
Алекс
2

Я только что увидел вариант --multifileна странице руководства:

Это изменяет некоторые другие команды для принятия нескольких файлов для обработки в командной строке или чтения из STDIN с каждым именем файла в отдельной строке. Это позволяет обрабатывать много файлов одновременно. --multi- file в настоящее время может использоваться вместе с --verify, --encrypt и --decrypt. Обратите внимание, что --multifile --verify не может использоваться с отдельными подписями.

Что вы конкретно ищете, --encrypt-filesи, опять же, справочная страница:

Идентичен --multifile --encrypt.

tshepang
источник
1
Спасибо, это хорошо работает, за исключением того, что gpg не поддерживает ключ --multiple с параметром --symmetric (я хочу шифровать только с использованием ключевой фразы).
гладимдим
1

Эй, я прочитал комментарии к ответу, который был помечен как исключенный; Похоже, вы должны быть осведомлены о магии |(анонимных каналов). Проверьте ответ, который я только что опубликовал на superuser, и вы обнаружите, что tar& gpgможно объединить так , чтобы ваш вывод был сжат и зашифрован перед выводом. Обратите внимание, что он по-прежнему будет использовать значительные системные ресурсы, поэтому проверьте команды на manстраницах, чтобы niceограничить способность команд поглощать только определенный процент ресурсов. Кроме того, пока я в настроении предлагать темы, которые могут облегчить вашу жизнь в командной строке в целом; посмотрите на файловые дескрипторы и именованные каналы для передачи данных.

Если вы хотите увидеть, какую магию можно выполнить, когда понятны вышеперечисленные темы, проверьте журналы сборки Travis-CI и соответствующие сценарии на наличие решений, связанных с автоматизацией GnuPG в командной строке.

---- Обновления

В соответствии с просьбой, пример для работы с каталогами может быть найден в ранее упомянутом сценарии в строке 680, и более обобщенный пример будет ...

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

... который может работать с script-name.sh /path/to/dirили script-name.sh /path/to/dir new-email@host.domainи должен выводить в /tmpкаталог файл<current-date>_<top-dir-name>.tgz.gpg

S0AndS0
источник
Вы можете написать пример?
Никана Reklawyks
Да, хотя это может занять немного :-D
S0AndS0