14 avril 2013

Afficher le contenu d’une bande sous Linux

Voici un petit script fort simple, qui permet d’afficher la liste des fichiers sauvegardés avec tar sur une bande magnétique (LTO par exemple) sous Linux.
L’intérêt est de lister l’ensemble des fichiers présent sur la 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 intégral d'une bande
#
# 10/10/2012 - Creation
#
BANDE=/dev/nst0
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"
--------------------------------------------------------------------------------------------

Exemple d’utilisation :
----------------------------------------------------------------- 
[user@vbox ~]$ liste_bande.sh
Lecteur /dev/nst0 - Compression Y
Rembobinage : OK
Liste des fichiers
At block 0.
-rw------- root/root         0 2012-10-07 03:43 maillog
-rw------- root/root         0 2012-09-09 03:45 maillog-20120916
-rw------- root/root         0 2012-09-16 03:26 maillog-20120923
-rw------- root/root         0 2012-09-23 03:38 maillog-20120930
-rw------- root/root         0 2012-09-30 03:22 maillog-20121007
At block 2.
-rw------- root/root     20872 2012-10-09 15:46 messages
-rw------- root/root      1349 2012-09-16 03:26 messages-20120916
-rw------- root/root      4567 2012-09-23 03:38 messages-20120923
-rw------- root/root      1536 2012-09-30 03:22 messages-20120930
-rw------- root/root      1282 2012-10-07 03:43 messages-20121007
At block 4.
Pour se positionner devant un bloc, avant restauration, faire mt -f /dev/nst0 seek n
[user@vbox ~]$ 
-------------------------------------------------------------------------------------

A noter que le script ne rembobine pas la bande. Si cela est nécessaire l’ajouter à la fin :

mt -f $BANDE rewind 

Pour se positionner correctement sur la bande afin de faire une restauration, il suffit de faire un seek (en étant en début de bande) avec le numéro de bloc indiqué par le script.
Par exemple, pour restaurer à partir de l’affichage précédente le fichier messages-20121007, faire :

[user@vbox ~]$ mt -f /dev/nst0 rewind 
[user@vbox ~]$ mt -f /dev/nst0 seek 2
 [user@vbox ~]$ tar -xzvf /dev/nst0 messages-20121007 messages-20121007

Remarque :
Sous Red-Hat et Oracle Linux, Si un utilisateur autre que root doit accéder au lecteur de bande, l’ajouter dans le groupe tape pour qu’il ait les droits d’accès aux périphérique /dev/nst0 et /dev/st0

Aucun commentaire :

Enregistrer un commentaire