Por que preciso ler uma fita 3 vezes para ler 2 arquivos?

1

Depois de gravar dois arquivos tar em uma fita:

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

Por que preciso ler a partir da fita três vezes para ler os dois arquivos?

$ 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
    
por Oskar Persson 24.03.2017 / 09:26

1 resposta

3

No final do primeiro tar tvf , a fita é deixada no último bloco do primeiro arquivo. O segundo tar tvf lê isso novamente, e reclama, mas fazendo isso deixa a fita no primeiro bloco do segundo arquivo, então o terceiro tar tvf funciona.

Ao trabalhar com vários arquivos em fita, você deve usar mt para mover-se entre os arquivos antes de executar tar :

mt -f /dev/st0 rewind
tar tvf /dev/nst0
mt -f /dev/nst0 fsf 1
tar tvf /dev/nst0
    
por 24.03.2017 / 10:07