Я пытаюсь записать наши онлайн-резервные копии на ленту; по очевидным причинам я хочу зашифровать данные на лентах, поэтому для записи на ленту мне нужно все зарезервировать, передать это в openssl, чтобы зашифровать, а затем записать на ленту:
tar c /etc | openssl aes-128-cbc -salt -pass "pass:Test123" | dd of=/dev/nst0
Однако, похоже, dd это не нравится. Запись прямо на ленту из tar работает нормально:
svr-bup1 # tar cf /dev/nst0 /etc
tar: Removing leading `/' from member names
svr-bup1 #
Добавляем dd в цепочку и он ломается:
svr-bup1 # tar c /etc | dd of=/dev/nst0
tar: /dev/nst0: Cannot open: Device or resource busy
tar: Error is not recoverable: exiting now
0+0 records in
0+0 records out
0 bytes (0 B) copied, 9.6274e-05 s, 0.0 kB/s
То же самое происходит с командой openssl и без нее; Я пропустил его выше, чтобы упростить тестирование.
Команды mt работают нормально (с установленной переменной env TAPE):
svr-bup1 # mt status
SCSI 2 tape drive:
File number=6, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x46 (LTO-4).
Soft error count since last status=0
General status bits on (81010000):
EOF ONLINE IM_REP_EN
svr-bup1 # mt rewi
svr-bup1 #
Оборудование - это диск HP 1720 LTO4 SAS, использующий драйвер mpt2sas в CentOS 6.
Ваша версия tar
похоже, пытается записать на ленточное устройство по умолчанию, а не на стандартный вывод. Похоже, это GNU tar
. Автоматическое определение ленточного накопителя было по умолчанию до версии 1.11.5. GNU tar, и я подозреваю, что у вас такая старая версия. Версии tar в других системах UNIX также могут по умолчанию пытаться записывать на ленточное устройство.
Заставить tar писать в стандартный вывод, указав f
ile -
:
tar cf - /etc | dd of=/dev/nst0