Назад | Перейти на главную страницу

dd не может писать на ленточный накопитель

Я пытаюсь записать наши онлайн-резервные копии на ленту; по очевидным причинам я хочу зашифровать данные на лентах, поэтому для записи на ленту мне нужно все зарезервировать, передать это в 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 писать в стандартный вывод, указав file -:

tar cf - /etc | dd of=/dev/nst0