MT sert à contrôler le lecteur de bandes magnétiques à un assez bas niveau. Cette application permet d’ajouter des tags sur la bande, éjecter la bande, rebobiner la bande et se déplacer par rapport aux tags.
Les commandes de bases
Voir les informations de la bande:
mt -f /dev/st0 status
Rembobiner la bande:
mt -f /dev/st0 rewind
Voir le contenu (compressé) de la bande:
tar -tzf /dev/st0
Si vous avez ce message d’erreur:
tar (child): /dev/st0 : read impossible: Ne peut allouer de la mémoire
tar (child): Début de la cartouche atteinte ; arrêt du programme.
tar (child): Error is not recoverable: exiting now
gzip: stdin: unexpected end of file
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Cela est probablement dû à l’option -z de tar, les données sur la bande ne sont pas compressées:
Voir le contenu (non compressé) de la bande:
tar -tf /dev/st0
Si vous avez ce message:
tar: /dev/st0 : read impossible: Ne peut allouer de la mémoire
tar: Début de la cartouche atteinte ; arrêt du programme.
tar: Error is not recoverable: exiting now
Cela est probablement dû à la taille de block (512 par default) qui a été spécifie lors de la création de l’archive.
En effet, tar ne détermine pas automatiquement la taille des blocs, Il faudra donc le spécifier lors de la restauration.
Pour cela, il faut connaitre la taille de block qui a été spécifié lors de la création:
stat -f /dev/st0
Fichier : « /dev/st0 »
Identif. : 0 Longueur du nom : 255 Type : tmpfs
Taille de bloc : 4096 Taille de bloc fondamentale : 4096
Blocs : total : 2560 libre : 2560 disponible : 2560
Inœuds : total : 2042000 libre : 2041603
On peut maintenant voir le contenu de la bande dans le lecteur:
tar -b 4096 -tf /dev/st0
Si il y a beaucoup de fichiers sur la bande:
tar -b 4096 -tf /dev/st0 > liste_fichier_bande.txt
Pour éjecter la bande:
mt -f /dev/st0 eject
Rembobiner et éjecter la bande:
mt -f /dev/st0 offline
Effacer la bande:
mt -f /dev/st0 erase
Connaître sa position (block) sur la bande:
mt -f /dev/st0 tell
Se déplacer à la fin des données sur la bande :
mt -f /dev/nst0 eod
Pour se positionner devant un bloc:
mt -f /dev/nst0 seek n°_de_block
Se déplacer à l’enregistrement précédent:
mt -f /dev/nst0 bsfm 1
Se déplacer à l’enregistrement suivant:
mt -f /dev/nst0 fsf 1
Faire une sauvegarde du dossier /etc et /home avec compression:
tar -czf /dev/st0 /etc /home
Restaurer tous les fichiers de la bande vers /home:
mt -f /dev/st0 rewind
tar -xzf /dev/st0 /home
Sauvegarder sur plusieurs bandes le dossier /home:
tar -clpMzvf /dev/st0 /home
Restaurer à partir de plusieurs bande le dossier /home:
tar -xlpMzvf /dev/st0 /home
Comparer la sauvegarde sur bande au dossier /home:
tar -dlpMzvf /dev/st0 /home
Remarque:
-d : trouve les différences entre l'archive et le repertoire
-x : extraire des fichiers d'une archive
-l : lister le contenu d'une archive
-p : ignore le umask lors de l'extraction
-M : créer / lister / extraire des archives multi-volumes (plusieurs bandes)
-z : compression avec Gzip
-v : mode verbial
Aller plus loin:
Voici un petit script qui affiche la liste des fichiers sauvegardés (avec tar) sur une bande avec en préambule de chaque sauvegarde le numéro du bloc à partir duquel démarre la sauvegarde:
#!/bin/sh
# Script affichant le contenu d'une bande en spécifiant le numero de block
#
#
BANDE=/dev/st0
COMPRESS=Y
#
# On rembobine
echo "Lecteur $BANDE - Compression $COMPRESS"
echo -n "Rembobinage "
MSG=$(mt -f $BANDE rewind 2>&1)
if [ $? -ne 0 ] ; then
echo "Erreur : " $MSG
exit 1;
fi
echo ": OK"
echo "Liste des fichiers"
mt -f $BANDE tell
if [ "$COMPRESS" == "Y" ] ; then
CMD=tzvf
else
CMD=tvf
fi
LOOP=0
while [ $LOOP -eq 0 ] ; do
tar -$CMD $BANDE 2> /dev/null
LOOP=$?
if [ $LOOP -eq 0 ] ; then mt -f $BANDE tell
fi
done
echo "Pour se positionner devant un bloc, avant restauration, faire mt -f $BANDE seek n"
mt -f $BANDE rewind
Exemple d’utilisation :
./liste_bande.sh
Lecteur /dev/st0 - Compression Y
Rembobinage : OK
Liste des fichiers
At block 0.
-rw------- 1 romain romain 23415 déc. 15 09:07 .bash_history
-rw-r--r-- 1 romain romain 220 nov. 2 14:53 .bash_logout
-rw-r--r-- 1 romain romain 3526 nov. 2 14:53 .bashrc
At block 2.
-rw------- 1 romain romain 10549 déc. 5 11:14 .viminfo
-rw------- 1 romain romain 51 déc. 7 19:35 .Xauthority
-rw------- 1 romain romain 358 déc. 15 09:03 .xsession-errors
At block 4.
Pour se positionner devant un bloc, avant restauration:
mt -f /dev/nst0 seek n°_de_block
Par exemple, pour restaurer le fichier « .bashrc » situé au block 4 :
mt -f /dev/st0 rewind
mt -f /dev/st0 seek 2
tar -xzvf /dev/st0 .bashrc
Remarque :
Si un utilisateur autre que root doit accéder au lecteur de bande, il faudra l’ajouter dans le groupe tape pour qu’il ait les droits d’accès aux périphérique /dev/nst0 et /dev/st0