IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Optimisation script de Backup


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut Optimisation script de Backup
    Bonjour,

    J'ai écris un script simple de backup entre deux machines distante. Il fonctionne à merveille. Le problème que j'ai c'est que le backup est long, 28h pour environ 400G de données.

    Résumé de la partie principale du script :
    -> Si le tar.gz n'exite pas, je fais le rsync, je tar, puis je gz.
    -> S'il existe, je gz -d, je tar -x, je met à jour avec rsync puis je retar et regz.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    # /bin/bash
     
    # Creation des fichiers temporaires
     
    touch /data/export/backup/academic.txt
    touch /data/export/backup/mail.txt
     
    # Recherche des personnes appartenant au groupe academic
    # Résultat mis dans le fichier academic.txt
     
    ldapsearch -h machin -p 389 -D "cn=Admin" -w xxxxx -b ou=people,dc=conception,dc=arcsis,dc=org gidNumber=80000 | sed -n 's/^uid: //p' > /data/export/backup/academic.txt
     
     
    # Début de la boucle qui lit les noms un par un (ligne par ligne)
     
    while read line
    do
     
    # Si le dossier de la personne n'existe pas, le créer
     
    	if [ ! -e "/data/export/backup/academic/$line" ]; then
    		mkdir /data/export/backup/academic/$line
    	fi
    # Si c'est le premier backup, création du tar.gz 
     
    	if [ ! -e "/data/export/backup/academic/$line/$line.tar.gz" ]; then
    		echo "Début du backup de $line"
    		/usr/local/bin/rsync -r -t -o -g -v --progress -c -z -i -s /home/$line /data/export/backup/academic/$line/
     
    # Si la commande précédente comporte une erreure 
    # elle est reporter dans le fichier mail.txt qui sera envoyé à la fin
     
    		if [ $? = 0 ]; then 
    			echo "Les données de l'utilisateur $line ont bien été mise à jour" >> /data/export/backup/mail.txt
    		else
    			echo "Une erreur est survenue lors de la mise à jour des donnée de $line" >> /data/export/backup/mail.txt
    		fi	
    #
     
    		tar -cvf /data/export/backup/academic/$line/$line.tar /data/export/backup/academic/$line/$line
    		gzip /data/export/backup/academic/$line/$line.tar
    		rm -rf /data/export/backup/academic/$line/$line
    		echo "Taille fichier : " ; du -sh /data/export/backup/academic/$line/$line.tar.gz >> /data/export/backup/mail.txt
     
     
     
    # Si le fichier de backup existe déjà : On décompresse -> fait une mise à jour
    # -> recompresse -> supprime le .tar 
     
    	else
    		echo "Début de la mise à jour de $line"
    		gzip -vd /data/export/backup/academic/$line/$line.tar.gz
    		tar -xvf /data/export/backup/academic/$line/$line.tar
    		/usr/local/bin/rsync -r -t -o -g -v --progress -c -z -i -s /home/$line /data/export/backup/academic/$line/
    #
    		if [ $? = 0 ]; then
    			echo "Les données de l'utilisateur $line ont bien été mise à jour" >> /data/export/backup/mail.txt 
    		else
                    	echo "Une erreur est survenue lors de la mise à jour des donnée de $line" >> /data/export/backup/mail.txt 
            	fi
    #
    		tar -cvf /data/export/backup/academic/$line/$line.tar /data/export/backup/academic/$line/$line
    		gzip /data/export/backup/academic/$line/$line.tar
    		rm -rf /data/export/backup/academic/$line/$line
     
    		echo "Taille fichier : " ; du -sh /data/export/backup/academic/$line/$line.tar.gz >> /data/export/backup/mail.txt
    	fi
    done < /data/export/backup/academic.txt
     
    # Envoi des information de backup
     
    mail -s "Résumé du Backup du $(date)" root < /data/export/backup/mail.txt
     
    # Supression des fichiers temporaire
     
    rm /data/export/backup/academic.txt
    rm /data/export/backup/mail.txt
    D'après mes observations, ce serait le tar et le zip (détar et dézip) qui prendrais le plus de temps. Aurait-il une alternative plus optimisé permettant de comprésser plus rapidement. Je veux que ça reste sous forme de script, pas de logiciel ou autre.

  2. #2
    Membre émérite
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Par défaut
    Au vu de la quantité, il serait intéressant de changé la méthode de backup. Par exemple en utilisant un backup par incrémentation. Personnellement, j'utilise Duplicity.

    Après tout dépend la nature (taille, texte ou binaire, ...) des fichiers à sauvegarder.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    La méthode avec duplicity m'a l'air interessante, je vais voir de ce coté là. Si ça peut accélérer la transmission des données il me manquera plus qu'une compression plus rapide que gzip.

    Merci pour cette piste.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    • attention, ton shebang est mal formé : il faut un point d'exclamation.
    • l'affichage à l'écran de la progression de rsync prend du temps.
    • pareil pour tar et son option v
    • tu peux te dispenser d'un fichier temporaire, celui qui recueille les informations de ldapsearch, en utilisant une substitution de processus :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
       
      while read line
      do :...
      done < <(ldapsearch ...)
    • tar peut zipper en archivant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { echo "Taille fichier : " ; du -sh /data/export/backup/academic/$line/$line.tar.gz;} >> /data/export/backup/mail.txt
    sinon le echo n'ira pas dans le mail.
    pourquoi du -sh fichier ?

    en résumé, avant de trouver d'autres programmes plus rapide, lis donc la documentation de ceux que tu utilises pour en optimiser l'emploi.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Par défaut
    Merci pour tes remarques,

    l'utilisation du verbose était présente pour vérifier l'éxécution durant cette phase de teste, il sera bien entendu enlevé. Je vais tester sans l'utilisation du fichier temporaire, c'est toujours ça de moins à traiter.

    Par contre le taux de compression de tar ne m'intéresse pas. J'ai déjà fait les testes dans ce sens. Et j'ai effectivement besoin du "s" de mon du.

    Je ne recherche pas de "logiciel" ou autre qui fasse le boulot à ma place. Pour faire clair, ma question est : Existe t'il un moyen de compresser des fichiers avec un taux de compression proche du gzip mais qui prenne moins de temps?

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,
    Je ne sais pas ce que cela vaut, mais voici un lien comparatif de compression:
    http://rlwpx.free.fr/WPFF/comploc.htm

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script de backup
    Par d10g3n dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 21/04/2009, 17h28
  2. Script de Backup FTP
    Par Are-no dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2007, 19h04
  3. Script pour backup
    Par IDE dans le forum Administration système
    Réponses: 18
    Dernier message: 01/05/2006, 18h12
  4. Optimisation d'un backup
    Par GLDavid dans le forum Linux
    Réponses: 10
    Dernier message: 15/11/2005, 14h10
  5. [GZip] script de backup compresser un repertoire en gzip
    Par venomelektro dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 27/10/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo