为什么我需要读取磁带 3 次才能读取 2 个档案?

为什么我需要读取磁带 3 次才能读取 2 个档案?

将两个 tar 存档写入磁带后:

$ mt -f /dev/st0 rewind
$ tar cvf /dev/nst0 first
$ tar cvf /dev/nst0 second

为什么我需要读磁带次阅读档案?

$ mt -f /dev/st0 rewind

$ mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x44 (LTO-3).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

$ tar tvf /dev/nst0
drwxrwxr-x oskar/oskar       0 2017-03-23 11:35 first/

$ mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=0, block number=10, partition=0.
Tape block size 0 bytes. Density code 0x44 (LTO-3).
Soft error count since last status=0
General status bits on (1010000):
 ONLINE IM_REP_EN

$ tar tvf /dev/nst0
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors

$ mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=1, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x44 (LTO-3).
Soft error count since last status=0
General status bits on (81010000):
 EOF ONLINE IM_REP_EN

$ tar tvf /dev/nst0
drwxrwxr-x oskar/oskar       0 2017-03-23 11:37 second/

$ mt -f /dev/nst0 status
SCSI 2 tape drive:
File number=1, block number=3, partition=0.
Tape block size 0 bytes. Density code 0x44 (LTO-3).
Soft error count since last status=0
General status bits on (1010000):
 ONLINE IM_REP_EN

答案1

在第一个文件的末尾tar tvf,磁带留在第一个文件的最后一个块上。第二个文件tar tvf再次读取该内容,并抱怨,但这样做会将磁带保留在第二个文件的第一个块上,因此第三个文件tar tvf可以工作。

当处理磁带上的多个文件时,您应该mt在运行之前在文件之间移动tar

mt -f /dev/st0 rewind
tar tvf /dev/nst0
mt -f /dev/nst0 fsf 1
tar tvf /dev/nst0

相关内容