dd 无法写入磁带驱动器

dd 无法写入磁带驱动器

我正在尝试将我们的在线备份转储到磁带上;出于显而易见的原因,我想加密磁带上的数据,因此要写入磁带,我需要将所有内容打包成 tar,通过管道传输到 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 命令工作正常(设置了环境变量 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 驱动器,使用 CentOS 6 上的 mpt2sas 驱动程序。

答案1

您的版本tar似乎默认尝试写入磁带设备,而不是标准输出。它似乎是 GNU tar在 1.11.5 版本之前,自动检测磁带驱动器是默认设置GNU tar,我怀疑您使用的是旧版本。其他 UNIX 系统上的 tar 版本可能也会默认尝试写入磁带设备。

f通过指定ile强制 tar 写入 stdout -

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

相关内容