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 :

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 confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut Script de backup
    Bonjour!

    Je cherche à réaliser un script qui me permettrait de sauvegarder l'ensemble d'un répertoire ("/home/user1" par exemple) dans un autre répertoire ou un fichier tar.

    Problème: je suis un grand débutant en "scriptologie" (traduction: je suis complètement nul )

    J'aimerais aussi que ce script ne sauvegarde à chaque fois que les fichiers qui ont été modifiés depuis le dernier backup (l'idée serait en effet de mettre le script dans la crontab).

    Voilà! Je sais que pour des grosses bêtes du script écrire un petit programme comme ça est à peine plus compliqué que de commander du pain à la boulangère du coin

    Alors si une âme charitable était d'accord pour réaliser ce bout de code...

    Marchi d'avance.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    lit le manuel de rsync .......

    une base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsync -t /home/user1/* [hosts]:/repertoire_de_sauvegarde/user1
    le [hosts]: uniquement si tu sauvegarde sur une autre machine.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Super !! "man rsync" ; c'est exactement ce qu'il me fallait

    Merci beaucoup!

    Par contre: après je sauvegarde la ligne de code dans un fichier du genre "backup.sh"? que je rends exécutable et que je place dans crontab, c'est ça?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    exacte pour un "backup.sh".
    Attention toutefois, un script en crontab ne doit JAMAIS prejuger de variables d'environnements (PATH, LIBARY, HOME, .....) et donc toujours les initialiser lui même, lezs cheminin de commande doivent être tous en absolu.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    les cheminin de commande doivent être tous en absolu.
    Ok, c noté. Merci encore.

    Au fait, il semblerait plutôt que la commande soit:

    rsync -a /home/user1/* [hosts]:/repertoire_de_sauvegarde/user1

    en effet, selon man:

    -a, --archive
    Ceci est équivalent à -rlptgoD. C'est un moyen rapide de dire
    que vous voulez la récursion et tout préserver pratiquement
    tout. La seule exception est que si --files-from a été spécifié
    alors -r n'est pas utilisée.


    Sinon en cherchant sur google j'ai trouvé ça:

    http://www.mikerubel.org/computers/rsync_snapshots/

    C'est en anglais, c'est très complet, apparement en plus de rsync il conseille d'utiliser des liens en dur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Par défaut
    Bon très bien, tout fonctionne. Pour le cas où quelqu'un est intéressé par ce problème, je vais détailler la démarche pas à pas, bref, faisons un petit:

    TUTO BACKUP

    Le but de ce tuto est donc de sauvegarder quotidiennement le contenu d'un répertoire "/chemin/rep1" vers un autre répertoire: "/chemin/rep2".

    Première étape, créer un fichier /usr/bin/backup.sh qui contiendra l'ordre de copier rep1 vers rep.
    Donc, ouvrir un terminal et passer en mode super utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $su
    Password: votre mot de passe root
    Si tout s'est bien passé, vous avez un "#" à la place du "$".
    Ensuite, créer et éditer le fichier /etc/bin/backup.sh:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #kwrite /etc/bin/backup.sh
    Kwrite s'ouvre, vous êtes face à une page blanche. Taper:

    #!/bin/bash
    rsync -a /chemin/rep1 /chemin/rep2
    "-a" vous assure à la fois que la copie sera récursive (contiendra tous les sous répertoires de /chemin/rep1) et que seul les fichiers modifiés seront réenregistré à chaque fois (et donc évitera de faire mouliner votre ordinateur pendant des heures à chaque fois).

    Tel quel, si vous créez un jour un fichier "toto" dans /chemin/rep1, et que vous l'effacez le lendemain ; le fichier toto restera pour toujours présent dans /chemin/rep2.

    Si vous voulez que lors de la supression d'un fichier de /chemin/rep1 il soit aussi effacer de /chemin/rep2, alors il faut ajouter l'option "--delete" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    rsync -a --delete  /chemin/rep1 /chemin/rep2
    Une fois que vous avez entrez l'une de ces deux lignes de codes, vous enregistrez et vous quittez.

    Vous êtes normalement de retour dans la console. On va maintenant éditer le fichier /etc/crontab qui définit toutes les tâches qui doivent être effectuées régulièrement:

    Vous voilà dans votre fichier crontab. Normalement il devrait déjà contenir des lignes de codes. Voilà par exemple ce contient le mien:

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    # run-parts
    01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
    02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily
    22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
    42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
    5 * * * * root /usr/bin/noip-update
    Vérifiez bien que la première ligne "SHELL=/bin/bash" existe. Sinon, rajoutez là.
    La partie qui nous intéresse est "run-parts". C'est elle qui contient la liste des programmes à exécuter régulièrement ainsi que leur fréquence d'exécution.

    La première partie de l'entrée de crontab décrit quand l'action sera effectuée. Il y a cinq champs, séparés par un espace ou une tabulation, dont chacun est paramétré soit par, un nombre, une étoile (*), ou le texte approprié. Les champs sont, dans l'ordre, minute, heure, jour du mois, mois et jour de la semaine. Le mois et le jour de la semaine permettent l'utilisation d"une abréviation (suivant les jours et mois en anglais), telle que jan pour janvier (January) ou thu pour jeudi (Thursday).

    Nous allons donc rajouter la ligne:

    5 * * * * root /usr/bin/backup.sh
    Elle signifie que le programme /usr/bin/backup.sh sera exécuté à chaque heure et cinq minutes (à 0h05; 1h05, 2h05, etc...). Si vous voulez plutôt que la sauvegarde s'effectue tous les jours à 23h05 :


    5 23 * * * root /usr/bin/backup.sh
    Tous les 5 du mois à 23h05:


    5 23 5 * * root /usr/bin/backup.sh
    etc...

    Voilà!!

    Quelques liens

    pour rsync:

    http://doc.ubuntu-fr.org/serveur/rsync


    un très bon article:

    http://www.linuxfocus.org/Francais/M...ticle326.shtml


    dans le forum de developpez:

    http://developpez.net/forums/showthread.php?p=1393418


    avec un réseau:
    http://www.bidon.ca/Automatiser_les_...vec_rsync.html



    pour cron:

    http://doc.ubuntu-fr.org/applications/cron
    http://www.linux-france.org/article/...ntfaire-8.html

    et bien sûr:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $man rsync
    $man crontab

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

Discussions similaires

  1. [Batch] script de backup
    Par GPZ{^_^} dans le forum Windows
    Réponses: 10
    Dernier message: 29/01/2008, 15h26
  2. [csh] script de backup
    Par dad1977 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 17/07/2007, 21h42
  3. Script de Backup FTP
    Par Are-no dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2007, 19h04
  4. Script pour backup
    Par IDE dans le forum Administration système
    Réponses: 18
    Dernier message: 01/05/2006, 18h12
  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