Forum Linux.général Sauvegarde sur un serveur distant

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
27
juin
2016

Bonjour,

J'ai un petit soucis concernant une sauvegarde sur un serveur distant.

Serveur à sauvegarder : 192.168.1.250
Serveur de sauvegarde : 192.168.1.251

Je voudrais utiliser rsync mais cela ne fonctionne pas à traver le ssh puisque l'argument --link-dest fonctionne qu'en local.

J'ai essayé également de monter un volume NFS vers le .251 avec un script en shell qui permet de faire un roulement de mes sauvegardes sur le .251 mais cela ne fonctionne pas super bien.


Dossier à sauvegarder(exemple) : /sauvegarde_app
Dossier de destination : 192.168.1.251:/backup/backup.0

Le dossier s'organise comme cela : backup.0 backup.1 backup.2 backup.3 backup.4 backup.5 backup.6
Les sauvegardes se feront sur le backup.0 et un script supprimera backup.6 puis renommera tout les dossiers en backup.n+1 (backup.1 -> backup.2, backup.2 -> backup.3, etc…)

Je galère depuis pas mal de jour, pourriez-vous m'aider ?
Merci !

  • # et tu tapes quoi comme commande rsync ?

    Posté par  . Évalué à 3.

    non parce que là on a l'enoncé du probleme, mais on ne sait pas ou tu en es ?

    j'ai pas testé, mais sur ma machine, man rsync ne dit pas que le link-dest ne serait dispo qu'en local

    • [^] # Re: et tu tapes quoi comme commande rsync ?

      Posté par  . Évalué à 1.

      J'utilise rsync -av -r /sauvegarde_app/ -e ssh root@192.168.1.251:/backup/backup.0

      Les fichiers sont finalement bien transferer vers backup.0 du serveur distant mais je voudrais faire un transfert incremental. J'ai plus d'une centaine de gigaoctet de sauvegarde, une sauvegarde en full à chaque fois ce n'est pas très optimal.

      • [^] # Re: et tu tapes quoi comme commande rsync ?

        Posté par  . Évalué à 2.

        rsync -av -r /sauvegarde_app/ -e ssh root@192.168.1.251:/backup/backup.0

        vu que tu passes par ssh, sans rebond, ca doit tres bien marcher comme ca :
        rsync -av -r /sauvegarde_app/ root@192.168.1.251:/backup/backup.0

        l'incremental est géré automatiquement, il ne va pas retransferer un fichier qui existe deja et qui n'a pas été modifié.

        • [^] # Re: et tu tapes quoi comme commande rsync ?

          Posté par  . Évalué à 1. Dernière modification le 27 juin 2016 à 16:19.

          rsync -av -r /sauvegarde_app/ root@192.168.1.251:/backup/backup.0 --link-dest=/backup/backup.1

          et il faut initialiser ton backup.0 avec une copie "hard linkée" de backup.1 ?

  • # Exemple

    Posté par  . Évalué à 3.

    Voici un exemple de script que j'utilise (trouvé et modifié depuis le net). Ce script sauve sur un ordi distant un répertoire local. Sur l'ordi distant, un nouveau répertoire (horodaté) est créé à chaque sauvegarde.

    Il y a toujours un répertoire spécial, qui s'appelle "current" qui pointe sur la dernière sauvegarde. A chaque opération de sauvegarde, il y a grâce à --link-dest une comparaison avec la dernière sauvegarde. Si un fichier avait déjà été sauvegardé, alors un lien dur est crée sur ce fichier, donc le fichier n'est pas dupliqué, mais il est bien présent dans le nouveau répertoire de sauvegarde.

    Ainsi, on a un historique des sauvegardes, chaque répertoire de sauvegarde (horodaté) contient l'ensemble des fichiers (en "direct" ou en lien dur, c'est totalement transparent).

    Je pense que c'est une bonne base pour ce que tu veux faire. Adapte le à ton besoin. Vérifie l'option --delete qui sera à mettre selon ta politique de sauvegarde.

    #!/bin/sh
    date=`date "+%Y%m%d-T%H%M%S"`
    
    SOURCE_DIR=/home/titi/
    TARGET_HOST=192.168.0.4
    TARGET_USER=thesavman
    TARGET_DIR=/volume1/save/titi
    
    
    rsync --archive --one-file-system --hard-links \
      --human-readable --inplace  \
      --partial --progress \
      --delete-excluded \
      --itemize-changes \
      --exclude-from=$SOURCE_DIR/script/rsync-exclude \
      --link-dest=$TARGET_DIR/current \
      $SOURCE_DIR $TARGET_USER@$TARGET_HOST:$TARGET_DIR/incomplete_back-$date
    
     if [ $? -eq 0 ]; then
        ssh $TARGET_USER@$TARGET_HOST "mv $TARGET_DIR/incomplete_back-$date $TARGET_DIR/back-$date \
        && rm -f $TARGET_DIR/current \
        && ln -s $TARGET_DIR/back-$date $TARGET_DIR/current";
    fi
    • [^] # Re: Exemple

      Posté par  (Mastodon) . Évalué à 3.

      Remarque toute con, je vois que dans le script tu écris les options en toute lettre (-human-readable et pas -h). Bin je trouve ça bcp plus lisible et maintenable.

      Bonne pratique => je garde !

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # Merciiiiiiiiiiiiiii !

    Posté par  . Évalué à 2.

    Nice ! Merci beaucoup ! :D

    Problème résolue !

Suivre le flux des commentaires

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