Est-il vraiment impossible de prévoir des données sur une cassette?

Je voudrais garder un journal des files que j'écris en bande avec dd ou tar pour chaque file. Ensuite, à la fin de la course, précisez ce journal au début de la bande en utilisant dd. Si cela fonctionne, je peux voir le contenu de n'importe quelle bande en lisant les premiers blocs, puis utilisez "mt fsf" pour positionner la bande sur le file spécifié. Le journal ressemblerait à:

1 file1.gz 2 file2.gz 3 ... 

Et peut-être que j'inviterais un exemple utile:

 to restore the second file from the this list: mt -f /dev/nst0 fsf 2; tar xf /dev/nst0 

Je commence la course en écrivant un espace vide sur la bande:

 ## prepare a placeholder at the beginning of the tape dd if=/dev/zero bs=32k count=1024 of=/dev/nst0 ## loop through the files in the directory, writing them to tape and a log for file in $(ls test_dir); do tar cf /dev/nst0 $file && echo $file >>process.log done ## rewind the tape and prepend the process.log to the tape mt -f /dev/nst0 rewi (dd if=process.log bs=32k; dd if=/dev/zero bs=32k count=1024)|dd of=/dev/nst0 bs=32k conv=noerror,sync,block count=1024 ## see if worked mt -f /dev/nst0 rewi dd if=/dev/nst0 of=process.log bs=32k mt -f /dev/nst0 fsf 1 tar tf /dev/nst0 

Malheureusement, pendant que je peux lire la connection à la bande, je ne parviens pas à extraire d'autres données, produisant la sortie ci-dessous. Si je n'essaie pas d'écraser le premier file avec le journal de process, il produit le nom d'un file dans le directory de test.

 tar: This does not look like a tar archive tar: Error exit delayed from previous errors 

Est-ce qu'il n'y a vraiment aucun moyen de contourner cela? Je sais que je peux classr tous les files et ensuite assembler une list de files qui devraient correspondre à la bande (en fonction de la capacité de bande connue / estimée), alors, écris ceci d'abord; ce n'est pas aussi intelligent.

Je pense que vous pouvez le faire, mais vous ne pouvez pas coller un file au début d'une archive TAR comme cela; ils ont des en-têtes. Je soupçonne que si vous déplacez le contenu actuel de l'archive tar sur le disque et écrivez un autre file (en-tête et puis blocs de données) dans l'espace ainsi libéré, vous pourriez le faire. À less que vous ayez un moyen de déplacer le début du file sans déplacer des données, une telle opération serait très coûteuse (ce qui équivaut à réécrire la bande entière à chaque fois).

Voici la description GNU d'un en-tête TAR.

Sinon, oubliez d'utiliser TAR pour écrire les files et utilisez DD, tout en gérant les affectations de files vous-même.