Forum Programmation.shell Script Backup

Posté par  .
Étiquettes : aucune
0
14
juin
2007
Bonjour à tous!!

Je cherche à faire un script utilisant rsync et ssh afin de faire un backup régulier que je veux insérer dans une crontab.
Ce script sauvegarderait les données d'un répertoire nommé "partage" sur un serveur vers un deuxième serveur.

Le problème, c'est que je ne m'y connais pas du tout en script.

Si quelqu'un peut m'aider, ce serait super cool!!!

Merci à vous...
  • # Hmm

    Posté par  . Évalué à 1.

    rsync est assez simple à utiliser si tu connais déjà scp.

    il suffit d'un rsync source destination

    la source et la destination peuvent chacune comporter juste un chemin local ou une machine distante:chemin distant.

    Ensuite, pour ton backup il suffit de quelque chose comme :


    #/bin/bash
    DATE=`date +%Y%m%d`
    rsync -a "/chemin/vers/dossier/partage" "machine-distante:/backup/partage-$DATE"


    que tu fais tourner dans ton cron une fois par jour ?
  • # je commence

    Posté par  (site web personnel) . Évalué à 3.

    keyfile=le fichier de clé pour ssh - cf ssh-keygen
    RsyncSrc=login@serveur:/pathSrc
    RsyncDst=/pathDest

    rsync --partial -r -h --bwlimit=2000 -e "ssh -i $keyfile" $RsyncSrc $RsyncDst && exit 0

    ceci va copier les nouveaux fichiers vers la cible par ssh.
    L'auth par clé permet de ne pas mettre de mot de passe ...
    L'option bwlimit permet de ne pas saturer le serveur qui n'est pas une bete de course.
    • [^] # Re: je commence

      Posté par  . Évalué à 2.

      je serais d'avis d'utiliser aussi les options -ax de rsync
      histoire de ne pas se faire avoir par des points de montages (x)
      et le mode archive (a) qui préserve les flags.
    • [^] # Re: je commence

      Posté par  . Évalué à 1.

      OK, mais pour la clé ssh, dans ta ligne keyfile, je met le nom du fichier, c'est ça?

      Et je sais que je suis embêtant, mais la clé publique doit être de quel côté, serveur à sauvegarder, ou l'autre?

      Encore merci...
      • [^] # Re: je commence

        Posté par  . Évalué à 1.

        Dans la ligne keyfile tu mets le chemin vers ta clef privée, par exemple "~/.ssh/id_rsa" (ou sur une ligne IdentityFile comme je dis plus bas, ça revient au même).

        Sur le serveur, tu dois avoir un fichier ~/.ssh/authorized_keys qui contient la clef publique correspondant à la clef privée (il suffit de créer le fichier s'il n'existe pas et/ou de lui ajouter une ligne avec le contenu du fichier ~/.ssh/id_rsa.pub de la machine locale).
    • [^] # Re: je commence

      Posté par  . Évalué à 2.

      Je dois dire que je n'ai jamais compris l'utilité de terminer la dernière commande d'un script avec un && exit 0... si la commande se termine bien, de toute façon le code de retour sera 0. Si elle se termine mal, alors le "exit 0" ne sera pas exécuté... alors quoi ?

      Quant au "ssh -i $keyfile", il me semble plus propre de configurer SSH au besoin dans le fichier .ssh/config (au moins le chemin vers la keyfile ne se verra pas dans un "ps", par exemple), simplement :

      Host serveur
      IdentityFile /chemin/vers/la/clef


      Le -h est aussi inutile, si c'est pour être exécuté par cron ça ne sert pas à grand chose d'utiliser un format de sortie plus lisible par les humains.
  • # rsnapshot

    Posté par  . Évalué à 2.

    Bonjour,

    Une petite alternative (merci Linux Mag ^__^):
    rsnapshot [http://www.rsnapshot.org/]

    C'est tout prêt, il n'y a plus qu'à (j'adore cette phrase) paramétrer :-)

    Bon courage !

    Cdlt,
    • [^] # re script

      Posté par  . Évalué à 1.

      C'est encore moi!!!

      En numéro 1, je voudrais savoir si la syntaxe d'une commande en script est la même que dans un terminal.
      En numéro 2, voici un script que j'ai écrit (les commandes marchent dans un terminal):

      #!/bin/bash
      ssh root@ip_du_serveur
      rsync -azv chemin/répertoire_à_sauver ip_du_serveur:/chemin/répertoire de sauvegarde

      le but est de sauvegarder les fichiers dur un serveur distant.

      Est-ce que mon script est bon? Si oui, comment faire pour l'executer?Si non, comment le corriger?

      Merci de votre aide....
      • [^] # Re: re script

        Posté par  . Évalué à 1.

        C'est bon, ça marche, il fallait juste que je mette mon script dans /usr/bin pour qu'il marche!!

        A bientôt...

Suivre le flux des commentaires

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