Page suivantePage pr�c�denteTable des mati�res

13. Lire des bandes VMS depuis Linux

(Cette section a �t� �crite par Mike Miller)

13.1 Introduction

De temps en temps vous pourrez �tre amen� � lire des bandes enregistr�es � partir d'une machine sous VMS (ou des bandes enregistr�es pour �tre lisibles sous VMS et les syst�mes Unix). En g�n�ral, c'est assez facile pour les bandes DECFILES11A.

Bien que l'on puisse lire ceci comme une partie d'un mini-HOWTO Linux, je crois que les informations ici pr�sent�es sont appliquables � tout syst�me Unix -- j'ai fait cela avec Linux et les syst�mes Unix d'HP, de SUN et de DEC. La principale d�pendance � la plate-forme est le nom des fichiers p�riph�riques qui peuvent varier d'un syst�me � l'autre, et les options de mt pour sp�cifier le nom du p�riph�rique (par exemple, mt -f avec Linux et mt -t sur HPUX 9).

Avertissement : j'ai seulement essay� cela avec des lecteurs de bande Exabyte 8 mm SCSI. Si vous avez lu d'autres formats (vous avez encore des lecteurs 9 pistes qui tra�nent quelque part ?), faites-le moi savoir et je les ajouterai.

13.2 Les bases

Pour lire une bande qui a �t� �crite avec la commande copy de VMS (ou une commande compatible) tout ce que vous devez savoir est que, pour chaque fichier effectif, il y aura trois fichiers de donn�es sur la bande : une ent�te, les donn�es et une terminaison. L'ent�te et la terminaison sont int�ressantes car elles contiennent des informations sur le fichier tel qu'il �tait sous VMS. Le fichier de donn�es est... le fichier de donn�es. Chacun de ces fichiers peut �tre extrait de la bande avec la commande dd. La bande peut �tre positionn�e en utilisant la commande mt.

Prenons un exemple. J'ai une bande VMS. Les deux premiers de ses fichiers �taient appel�s ce66-2.evt et ce66-3.evt sur le syst�me VMS. Le label de la bande est c66a2.

Si j'ex�cute les commandes suivantes


$ dd if=$TAPE bs=16k of=ent�te1
$ dd if=$TAPE bs=16k of=donn�e1
$ dd if=$TAPE bs=16k of=terminaison1
$ dd if=$TAPE bs=16k of=ent�te2
$ dd if=$TAPE bs=16k of=donn�e2
$ dd if=$TAPE bs=16k of=terminaison2

je me retrouve avec six fichiers : ent�te1, donn�e1, terminaison1, ent�te2, donn�e2 et terminaison2. La syntaxe ici est if="fichier d'entr�e", bs="taille des blocs" et of="fichier de sortie". TAPE doit �tre une variable d'environnement contenant le nom du p�riph�rique de votre lecteur de bande --- par exemple /dev/nts0 si vous utilisez le premier disque SCSI sous Linux.

Si vous aviez voulu r�cup�rer le second fichier, mais pas le premier, sous son non d'origine, vous n'auriez pas eu � vous pr�occuper de l'ent�te :


$ mt -f $TAPE fsf 4
$ dd if=$TAPE bs=16k of=ce66-2.evt
$ mt -f $TAPE fsf 1

Notez le 4. Il permet de sauter trois fichiers pour le premier fichier et un pour l'ent�te du deuxi�me. Le second mt saute la seconde terminaison et positionne la bande au d�but du prochain fichier : la troisi�me ent�te. Vous pouvez aussi utilisez mt pour sauter des fichiers en arri�re (bsf), rembobiner (rewind) ou d�charger la bande (offline, rewoffl).

13.3 Quelques d�tails

Les fichiers d'ent�tes et de terminaisons contiennent des donn�es ASCII en majuscules utilis�es par VMS pour stocker des informations sur le fichier comme par exemple la taille des blocs. Ils contiennent aussi le nom du fichier, ce qui peut �tre utile si vous voulez faire des scripts qui lisent automatiquement des fichiers ou recherchent un fichier particulier. La premi�re ent�te de la bande est un peu diff�rente des suivantes.

L'en-t�te du premier fichier de la bande (comme par exemple dans l'exemple ci-dessus) d�bute par la cha�ne � VOL1 �. Suit le nom de volume. Dans notre exemple, le fichier ent�te1 commence par � VOL1C66A2 �. Vient ensuite une s�rie d'espace termin�e par un chiffre. Apr�s, on trouve la cha�ne � HDR1 � qui indique que l'on a � faire � un fichier d'ent�te. Les caract�res qui suivent imm�diatement la cha�ne � HDR1 � forment le nom du fichier VMS. Dans l'exemple, cette cha�ne est � HDR1CE66-2.EVT �. Le prochain champ est le nom du volume.

Le champs initial des autres fichiers (c'est-�-dire tous sauf le premier de la bande) est quelque peu diff�rent. � VOL1 � n'est pas pr�sent. Le reste est identique. Un autre champ utile est le septi�me. Il se termine par � DECFILES11A �. C'est un signe de conformit� au standard DEC Files11A.

Champ                Ent�te initiale                  Ent�tes suivantes
1                    VOL1 + nom du volume             HDR1 + nom du fichier
2                    HDR1 + nom du fichier            Nom du volume
3                    Nom du volume                    ...
4                    ...                              ...
5                    ...                              ...
6                    ...                              DECFILES11A
7                    DECFILES11A

Pour une documentation compl�te sur le format de l'ent�te et de la terminaison, voyez la documentation DEC FILES11 (sur le mur gris/orange --- demandez � votre communaut� VMS locale :-).

13.4 Commentaires sur la taille des blocks

Dans l'exemple, j'ai utilis� une taille de bloc de 16 ko. Sur un syst�me Unix, il n'y a pas de taille de bloc associ�e � un fichier sur un disque alors que, sous VMS, chaque fichier � une taille de bloc sp�cifique. Cela veut dire que la taille du bloc importe peu sous linux... sauf que cela rend la lecture des bandes plus compliqu�e. Si vous avez des difficult�s pour trouver la taille du bloc et pour lire une bande, vous pouvez essayer de r�gler la taille de bloc mat�rielle de votre lecteur de bande en utilisant mt -f $TAPE setblk 0. La syntaxe exacte de l'option setblk (et sa disponibilit�) d�pend de la version de mt, de l'interface mat�rielle de votre lecteur de bande et de votre environnement Unix.

(Merci � Wojtek Skulski pour avoir signal� l'option setblk.)


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25