(Cette section a �t� �crite par Mike Miller)
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.
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
).
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 :-).
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.)
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:25