В настоящее время мы можем выполнить и зашифровать резервную копию Windows с помощью ntbackup и GPG за 2 отдельных шага в пакетном сценарии, как показано ниже:
ntbackup backup "@selection_file.bks" /f "backup_file.bak"
gpg --recipient "recipient" --encrypt "backup_file.bak" --output "encrypted_file" --yes --batch
Мне интересно, есть ли способ объединить эти шаги для вывода резервной копии непосредственно в GPG без создания промежуточного незашифрованного файла резервной копии?
Чтобы прояснить, я ищу что-то вроде перенаправления стандартного ввода или конвейера
prog.exe | prog2.exe
который работает с GPG в командной строке. Спасибо за ваше время.
Не думаю, что ты сможешь это сделать. Но в качестве альтернативы вы, вероятно, можете сделать резервную копию на смонтированном томе truecrypt.
Хорошо, вот почему это не сработает.
Что вы пытаетесь сделать, так это убедить ntbackup передавать данные резервного копирования в стандартный поток, а не в файл. Проблема в том, что ntbackup не написан для этого. ntbackup необходимо указать имя файла для вывода данных, и, к сожалению, в Windows нет эквивалента / dev / stdin или / dev / stdout.
Чтобы это сработало, вам нужно убедить ntbackup печатать необработанные данные резервной копии на экране. Нет документации, о которой я знаю (или нашел путем поиска), которая хотя бы намекает на то, что это возможно удаленно. Это просто не было написано для этого. Сожалею.
Готовы заняться программированием? :) Вы можете использовать именованный канал (он же FIFO) для этого, но, насколько я могу судить, нет интерфейса, готового к работе с пакетными файлами.
Вероятно, вы могли бы использовать файл FIFO в качестве канала. Хотя я не совсем уверен, как бы вы создали такое в Windows. Но обычно они используются для этого, когда вы не можете использовать STDOUT для подключения.
Выполнение стандартного ntbackup с последующим использованием gpg создает промежуточный незашифрованный файл. Однако, если вы включите EFS, вы можете поместить файл резервной копии в зашифрованную папку, чтобы злоумышленник не смог восстановить открытый текст файла .bkf. Вероятно, это будет самый простой способ выполнить то, что вы просите, без полного переключения наборов инструментов.
Как ясно объяснил Matt_Simmons, ntbackup не будет выводить данные на стандартный вывод, поэтому попытки его использовать обречены.
gpg, однако, воля поступайте правильно, если вы используете (соглашение unix) '-' в качестве файла для ввода.
Итак, теперь вам нужен способ сбора файлов, который включает «возможность легко выбирать и исключать отдельные файлы», что полностью отвечает требованиям tar (см. Флаги -T и -X). Современные версии также могут выполнять сжатие с помощью флагов -z (gzip) и -j (bzip).
И, конечно же, их можно связать трубкой:
tar -cjf - /dir/to/backup -X .mp3 | gpg --encrypt - --output "encrypted_backup.enc"
Вы не можете сделать это с помощью gpg, но вы жестяная банка с openssl и mysys:
cat.exe testfile | openssl enc -cast > outfile
Вот справочная страница, вы даже можете указать пароль в командной строке, если вам это действительно нужно. Это будет работать только с симметричным шифрованием.
В документе командной строки 7-Zip упоминаются переключатели -si и -so для чтения из стандартного ввода и записи в стандартный вывод.
7z a dummy -tgzip -so Doc.txt > archive.gz
сжимает файл Doc.txt в выходной поток и записывает этот поток в файл archive.gz.
В нем не упоминается трубопровод, но если вы можете писать в stdout, я не понимаю, почему gpg не сможет его прочитать.
Я не верю, что ntbackup изначально поддерживает какое-либо шифрование.