Шифрование резервных копий с помощью GPG на нескольких лентах

В настоящее время я использую tar для записи своих резервных копий (файлов ntbackup) на накопитель на магнитной ленте, питаемый автозагрузчиком.

Пример:tar -F /root/advancetape -cvf /dev/st0 *.bkf(/ root / advancetape просто имеет логику для перехода к следующей ленте, если она есть, или уведомляет об обмене лентами)

Мне недавно передали требование зашифровать наши резервные копии на магнитной ленте. Я могу легко зашифровать данные без проблем, используя GPG. У меня проблема в том, как мне записать это на несколько лент с той же логикой, которую tar использует для продвижения лент после заполнения текущей? Я не могу сначала записать зашифрованный файл на диск (2+ ТБ). Насколько я могу сказать, tar не будет принимать двоичный ввод от stdin (он ищет имена файлов). Есть идеи?:(

3 ответа

Я использую этот скрипт:

#!/bin/sh

TAPE="/dev/nst0"
mt-st -f $TAPE setblk 0
mt-st -f $TAPE status
totalsize=$(du -csb . | tail -1 | cut -f1)
tar cf - . | \
        gpg --encrypt --recipient target@key.here --compress-algo none | \
        pipemeter -s $totalsize -a -b 256K -l | \
        mbuffer -m 3G -P 95% -s 256k -f -o $TAPE \
                -A "echo next tape; mt-st -f $TAPE eject ; read a < /dev/tty"

Чтобы адаптировать его к вашим потребностям, вот основные моменты:

  • tar читает из текущего каталога и выводит в stdout, Таким образом, tar не работает со сменой лент или шифрованием.
  • gpg сжатие отключено, поскольку это значительно замедляет процесс (100 МБ / с + до 5 МБ / с)
  • pipemeter используется для наблюдения за процессом и предоставления приблизительного времени, пока все данные не будут записаны на ленту - его можно удалить, если он не нужен
  • mbuffer буферизует данные в памяти - в этом примере используется буфер объемом 3 ГБ, настраиваемый по мере необходимости, - чтобы накопитель на магнитной ленте работал дольше, прежде чем заканчивались данные, уменьшая "чистоту" ленты.
  • -A вариант mbuffer обрабатывает несколько лент, извлекая ленту после достижения конца и ожидая Enter клавиша, которую нужно нажать после загрузки следующей ленты. Это где ваш /root/advancetape Сценарий может идти.

При использовании этого с лентами LTO следует учитывать одну проблему:

  • Размер блока ленты установлен на переменную, и mbuffer пишет в 256k блоков. Это хорошо работает для меня с приводом LTO3, однако tar любит использовать другой размер блока. Это в сочетании с тем, что mbuffer обрабатывает охват ленты, а не tar, означает, что вам нужно будет снова прочитать данные с ленты через mbuffer а затем передать его через gpg и на tar, Если вы попытаетесь извлечь его прямо с ленты с tar (даже если вы пропустили шифрование), оно, скорее всего, не будет работать и обязательно сломается, как только достигнет конца первой ленты, без возможности перехода на следующую ленту.

Я бы посоветовал вам взглянуть на этот вариант:

 -I, --use-compress-program PROG
       filter through PROG (must accept -d)

Вам может понадобиться написать скрипт, который принимает входные данные из stdin и шифрует их в stdout, но он должен работать. -D для распаковки, в этом случае вам нужно будет расшифровать ввод.

Вы можете реализовать это в своем скрипте -F. Вместо того, чтобы tar записывал напрямую в /dev/st0, используйте временную промежуточную область. Убедитесь, что вы указали размер тома явно, используя -L . Tar запишет в файл байты данных и затем вызовет ваш скрипт -F. Затем ваш скрипт может запустить gpg для файла и отправить его на ленту (а затем удалить часть архива из вашей промежуточной области).

Для этого необходимо, чтобы в вашей файловой системе было доступно место на одной ленте (x2).

См. http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html для получения дополнительной информации о переменных, доступных для вашего сценария -F.

РЕДАКТИРОВАТЬ: Также обратите внимание, что это совершенно не проверенная идея! Я думал о том, чтобы сделать что-то подобное, чтобы обеспечить сжатие многотомных архивов, но на самом деле я этого не реализовал.

Другие вопросы по тегам