Derniers journaux de flipflip :

Journal : Sauvegarder sur DAT en activant la compression

Posté par Philippe (page perso, ) le 10 août 2005
0
Pour les besoins d'une société j'ai écris un petit script sans prétention pour faire de la sauvegarde sur DAT SCSI 20/40. Rapidement j'ai été confronté au problème de place, en effet le volume dépasse les 20Go donc pour palié à cela j'ai activé la compression des cassettes. Certains vont dire pourquoi ne pas compresser la totalité des données puis les copiers sur la cassette. Avec cette méthode je perdais la possibilité de récupérer un seul fichier.

Les paramètres importants sont :
mt -f /dev/st0 rewind --> Remettre la bande au début
mt -f /dev/st0 setblk 0 --> Activer la taille de block variable
mt -f /dev/st0 compression --> Activer la compression des cassettes


J'en profite pour poster le script complet, si vous voyez des conneries dedans n'hésitez pas :)

#!/bin/sh
#
# --------------------------------------
# But : sauvegarde des fichiers sur DAT
# Auteur : Philippe MALADJIAN
# Crée : 16/07/2003
# Modifié : 10/08/2005
# --------------------------------------
#


# controle des parametres --------------
if [ $# -lt 1 ]
then
echo "Erreur : vous devez donner une action"
echo "Syntaxe : backup (sauv|rest)"
echo " - backup sauv --> lance une sauvegarde"
echo " - backup rest --> restaure la TOTALITE de la bande"

# Indisponible pour le moment
echo " - backup rest [nomfichier] --> restaure nomfichier"
exit
fi

# definition des variables -------------
PERIF=/dev/st0
SRCDIR=/home/users
LOGDIR=/var/log/backup.log
# --------------------------------------

# Sauvegarde ---------------------------
if [ $1 = sauv ]
then
DATE=`date +%d%b-%H:%M`
echo "[$DATE] : Lancement de la sauvegarde de $SRCDIR" >> $LOGDIR

# Remise au debut de la bande ----------------------
MT=`mt rewind 2>>$LOGDIR`
if [ $? = 2 ]
then
echo "[$DATE] : Erreur avec la cassette" >> $LOGDIR
exit
fi

# Lancement de la sauvegarde ------------------------
mt -f $PERIF rewind
mt -f $PERIF setblk 0
mt -f $PERIF compression
TAR=`tar -cf $PERIF $SRCDIR -X /home/informatique/admin/backup/tar_exclude 2>>$LOGDIR`
if [ $? = 2 ]
then
echo "[$DATE] : Erreur lors de la sauvegarde" >> $LOGDIR
exit
fi

# Creation du fichier index -------------------------
DATE=`date +%d%b-%H:%M`
INDEX=`tar -tf $PERIF > /tmp/index.txt 2>>$LOGDIR`
if [ $? = 2 ]
then
echo "[$DATE] : Erreur a la creation de l'index" >> $LOGDIR
exit
fi

echo "[$DATE] : Sauvegarde de $SRCDIR terminee" >> $LOGDIR
exit
fi
# --------------------------------------
Restauration -------------------------
# !!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!
# !! Restauration de la TOTALITE de !!
# !! la bande !!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if [ $1 = rest ]
then
# Restauration complete ------------
if [ -z "$2" ]
then
echo "ATTENTION vous avez choisis de faire une restauration complete"
echo "Elle sera effectuee dans le repertoire d'ou vous executez la commande"
echo "Souhaitez-vous continuer ? (o/n) :"
read VAR
if [ $VAR = o ]
then
MT=`mt rewind`
if [ $? = 2 ]
then
echo "mt: Cassette non chargee !"
exit
fi

TAR=`tar -xfpv $PERIF`
if [ $? = 2 ]
then
echo "tar: Impossible de restaurer la cassette"
exit
fi
exit
fi

if [ $VAR = n ]
then
exit
fi
else
# Restauration d'un fichier --------

echo "Fonction indisponible pour le moment"
exit
#MT=`mt rewind`
#if [ $? = 2 ]
#then
# echo "mt: Cassette non chargee !"
# exit
#fi
#TAR=`tar -xfpv $PERIF "$2"`
#if [ $? = 2 ]
#then
# echo "tar: Impossible de restaurer le fichier"
# exit
#fi
exit
fi
fi
# --------------------------------------

# pas de parametre passe ---------------
echo "Parametre incorrecte !"
exit
# --------------------------------------

> Lire le journal (19 commentaires, moyenne: 2,8).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

oups

Posté par Philippe (page perso, ) le 10/08/2005 à 09:31. (lien). Évalué à 7.

Désolé toute l'indentation a sauté :(

--
---
http://flipflip.ovh.org

tar/zip

Posté par Antoine () le 10/08/2005 à 09:53. (lien). Évalué à 3.

Certains vont dire pourquoi ne pas compresser la totalité des données puis les copiers sur la cassette. Avec cette méthode je perdais la possibilité de récupérer un seul fichier.

Ca dépend quel format tu utilises. Le format zip (commandes zip et unzip) compresse chaque fichier séparément, donc tu dois pouvoir récupérer un fichier indépendamment des autres. Par contre, il est à craindre qu'il faille quand même aller chercher les infos de répertoire du .zip à un bout ou l'autre de la bande...

  • [^]Re: tar/zip

    Posté par Philippe (page perso, ) le 10/08/2005 à 10:00. (lien). Évalué à 3.

    J'ai fais des tests avec le tar.gz pour la compression total.
    Pour ce qui est du parcours de la bande, j'utilise la création d'un fichier index.txt

    INDEX=`tar -tf $PERIF > /tmp/index.txt 2>>$LOGDIR`


    Comme ça si une personne me demande le fichier toto.superimportant mais qu'elle ne connait pas le répertoire ou même le nom complet, je fais un petit grep sur le fichier index.txt et hop je récupère le necessaire.

    --
    ---
    http://flipflip.ovh.org
  • [^]Re: tar/zip

    Posté par TazForEver () le 10/08/2005 à 14:48. (lien). Évalué à 2.

    c'est vrai que c'est un peu le problème de tar.* par rapport à des formats intégrés comme zip (ou rar avec un certain usage). Je suis méfiant par rapport à zip/unzip, je n'ai aucune idée si ça gère les droits et tout le bordel comme "tar p" ... ça serait intéressant d'avoir une solution, aussi performante que bzip2, mais avec des index pour pouvoir accéder rapidement à un fichier. Sans ça, ça plombe les outils graphiques, qui en sont réduit à tout décompresser ...

    • [^]Re: tar/zip

      Posté par Antoine () le 10/08/2005 à 17:53. (lien). Évalué à 3.

      La solution pourrait consister à "tarer" les bz2 au lieu de "bzipper" le tar. Il faudrait juste que les outils graphiques soient capables de reconnaître et traiter correctement un nom_de_fichier.bz2.tar ;)

      • [^]Re: tar/zip

        Posté par Jerome Herman () le 10/08/2005 à 18:14. (lien). Évalué à 2.

        Le principal inconviennient à tare les bzip2 est que chaque fichier bzippé va avoir son propre dictionnaire, alors que parfois de grosse ecconomies peuvent êtres faites sur un lot de fichiers similaires (typiquement des logs). Bref on va impacter sérieusement les performances de compression.

        La bonne façon de faire est de concatener les fichiers et les compresser en même temps. On obtient ainsi un seul dictionnaire pour la compression et donc de bien meilleure taux. Ensuite il suffit de prendre le catalogue du concateneur et de chercher l'index de début du fichier qui nous interresse.

        C'est ce que fait DAR.

        --
        Kha
        root est un privilège, pas un droit !
        • [^]Re: tar/zip

          Posté par PLuG () le 10/08/2005 à 22:34. (lien). Évalué à 5.

          le GROS probleme c'est surtout qu'une fois compressé il est beaucoup plus difficile de restaurer une bande avec des erreurs de lecture.
          un tar sur une bande deffectueuse => on recupere aisement la totalite des fichiers n'utilisant pas le morceau de bande abimé.
          un tar gzippé ou bzippé => plus rien.

Euh...

Posté par Gyro Gearllose () le 10/08/2005 à 10:27. (lien). Évalué à 4.

Salut !
A la lecture de ton script, y'a un truc qui me chiffonne....
Pourquoi lancer ces commandes :

mt -f $PERIF compression
TAR=`tar -cf $PERIF $SRCDIR -X /home/informatique/admin/backup/tar_exclude 2>>$LOGDIR`

Quand on peut faire :
TAR=`tar -zcf $PERIF $SRCDIR -X /home/informatique/admin/backup/tar_exclude 2>>$LOGDIR`
Pour avoir une compression au format gzip, ou
TAR=`tar -jcf $PERIF $SRCDIR -X /home/informatique/admin/backup/tar_exclude 2>>$LOGDIR`
pour avoir une compression au format bzip2 (si la commande tar est compilée avec l'option qui va bien) ?
Personnellement, j'utilise la seconde, et ça fonctionne on ne peut mieux.
Je n'ai pas de chiffres sous la main, alors quelqu'un de plus informé que moi pourra {in,con}firmer ce qui suit.
Si tu actives la compression avec ta commande mt, il s'agit de la compression matérielle fournie avec ton lecteur DAT. Il s'agit souvent d'un algo de compression "basique", souvent du zip, d'ailleurs, qui permet de gagner en place, c'est évident. Mais selon le type de données sauvegardées, ce n'est pas forcément l'algo fourni qui est le meilleur. A ta place, je tenterais les 3 (le matériel, le gzip, et le bzip), quitte à en essayer d'autres (compress, etc.) et j'utiliserais celui qui donne le meilleur rapport en fonction des données que je veux sauvegarder.
Enfin, je dis ça, je dis rien, comme on dit.
Ensuite, ce n'est pas le fait d'utiliser l'option de tar qui va bien qui empêche d'extraire un fichier ou un groupe de fichier.
Voilà, en espérant que ça aide....

--
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
  • [^]Re: Euh...

    Posté par Philippe (page perso, ) le 10/08/2005 à 11:32. (lien). Évalué à 2.

    Il me semble que j'ai déjà essayé sans résultat mais dans le doute je viens de relancer la commande avec zcf... réponse dans quelques heures.

    --
    ---
    http://flipflip.ovh.org
  • [^]Re: Euh...

    Posté par Matthieu Moy (page perso, ) le 10/08/2005 à 13:34. (lien). Évalué à 4.

    1) se méfier des options -z et -j de tar, dispo seulement sur GNU tar. Pour des scripts de backup, la probabilité de devoir faire tourner le script sur une machine non GNU est non nulle...

    2) Pour extraire un fichier d'un .tar.gz, il faut décompresser l'ensemble (pour obtenir le .tar -- même si on ne l'écrit pas forcément sur le disque), et ensuite extraire le fichier. Sur un backup de plusieurs giga, c'est pas pratique.

  • [^]Re: Euh...

    Posté par Philippe (page perso, ) le 11/08/2005 à 06:22. (lien). Évalué à 2.

    Alors j'ai essayé et voila le résultat... je préviens c'est pas beau à voir ;)

    [11Aug-03:00] : Lancement de la sauvegarde de /home/users
    tar: Removing leading `/' from member names
    [11Aug-03:02] : Lancement de la sauvegarde de /home/users
    /dev/tape: Device or resource busy
    tar (child): /dev/st0: Cannot open: Device or resource busy
    tar (child): Error is not recoverable: exiting now
    tar: Removing leading `/' from member names
    tar: /dev/st0: Cannot open: Device or resource busy
    tar: Error is not recoverable: exiting now
    [11Aug-03:02] : Erreur a la creation de l'index
    tar: This does not look like a tar archive
    tar: Skipping to next header
    tar: Archive contains obsolescent base-64 headers
    tar: Archive contains `\375\\\325Q}\307\214e\232\342\266\325' where numeric off_t value expected
    tar: Skipping to next header
    tar: Archive contains `G\245\0203\315;\\A\024g\350\351' where numeric off_t value expected
    tar: Skipping to next header
    tar: Archive contains `\'\353pS\260\244\237\364\351\227l\226' where numeric off_t value expected
    tar: Skipping to next header
    tar: Error exit delayed from previous errors
    [11Aug-04:55] : Erreur a la creation de l'index

    --
    ---
    http://flipflip.ovh.org
    • [^]Re: Euh...

      Posté par Philippe (page perso, ) le 11/08/2005 à 07:05. (lien). Évalué à 2.

      j'ai essayé sur un répertoire plus petit /tmp et voila ce que me donne les log :

      avec -zcf ou -jzf

      [11aoû-08:32] : Lancement de la sauvegarde de /tmp
      tar: Retrait de l'en-tête `/' des noms des membres
      tar: /tmp/.font-unix/fs7100: porte (socket) ignorée
      tar: /tmp/.X11-unix/X0: porte (socket) ignorée
      tar: Ceci ne ressemble pas à une archive de type «tar»
      tar: Escamotage jusqu'à la prochaine en-tête.
      tar: Statut d'erreur reporté d'erreurs précédentes.
      [11aoû-08:33] : Erreur a la creation de l'index

      --
      ---
      http://flipflip.ovh.org

Conneries...!

Posté par liberforce (Jabber id, page perso, ) le 10/08/2005 à 12:42. (lien). Évalué à 1.

Jen ai vu vite fait :-)
Parametre incorrecte => Parametre incorrect
Et puis la licence dans l'entête qui est absente :-)

Comment ça je ====> [ ] ?

  • [^]Re: Conneries...!

    Posté par patrick_g (page perso, ) le 10/08/2005 à 13:37. (lien). Évalué à 1.

    y'a aussi :
    vous avez choisis => vous avez choisi

J'ai une bonne et une mauvaise nouvelle pour toi

Posté par Jerome Herman () le 10/08/2005 à 13:19. (lien). Évalué à 7.

La bonne c'est que ce que tu cherches existe déjà et marche très bien (j'entre dans ma troisième année d'utilisation)
http://dar.linux.free.fr/(...)

La mauvaise c'est que tu t'es donné beaucoup de mal pour quelque-chose qui existe déjà.

--
Kha
root est un privilège, pas un droit !
  • [^]Re: J'ai une bonne et une mauvaise nouvelle pour toi

    Posté par Philippe (page perso, ) le 11/08/2005 à 06:20. (lien). Évalué à 2.

    sniffff... il me reste plus qu'à essayé ton prog...

    merci :)

    --
    ---
    http://flipflip.ovh.org

compression hardware ?

Posté par Matho (page perso, ) le 12/08/2005 à 13:56. (lien). Évalué à 1.

Yellow
Il me semble qu'il existe aussi un switch a l'arriere des DAT pour forcer une compression hardware.

Pourquoi n'as tu pas utilisé cette fonctionnalité?



et afio alors ?

Posté par Laurent (Jabber id, ) le 14/08/2005 à 17:15. (lien). Évalué à 1.

justement afio permet de compresser fichier par fichier et s'utilise très facilement pour faire des archives ... extrait du man :

       Supports  compression  while  archiving, with the -Z option.  Will com-
       press individual files in the archive, not the  entire  archive  datas-
       tream,  which  makes  afio  compressed  archives  much more robust than
       `tar zc' type archives.

dump ?

Posté par FRLinux (page perso, ) le 15/08/2005 à 22:33. (lien). Évalué à 1.

Tar c'est bien, mais selon l'OS de récupération, cela peut poser problème, donc c'est généralement une bonne idée de passer à dump qui marche très bien lors de restorations.

Steph

Revenir en haut de page