Discussion:Sauvegarder les données via SSH

De FphAdmin.

Version du 27 septembre 2008 à 17:36 par Vic (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

L'usage du joker * peut poser des soucis, notamment dans 2 cas de figure, car il est pris en compte par le shell et non par rsync, qui ne le verra pas

  • s'il y a trop de fichiers dans le répertoire courant (difficile de savoir à combien le trop correspond, de l'ordre de plusieurs centaines), le shell va refuser de remplacer le * et de lancer la commande avec une erreur du genre « Too many files », donc échec total
  • s'il y a des fichiers avec des caractères bizarres dans leur nom, notamment une espace, ou un caractère de code ascii 0 ou des retours de ligne (oui on peut trouver cela dans les noms des fichiers... c'est bien sûr pas une très bonne idée, mais bon ca arrive :-() alors certains de ses fichiers risquent de ne pas être sauvegardés. S'il y a un fichier qui s'appelle «un nom composé.txt» par exemple (sans les guillemets), l'* sera remplacé par un nom composé.txt, mais maintenant rsync verra 3 fichiers différents, un, nom, composé.txt et aucuns de ces trois là n'existe donc au final le rsync se fera mais sans sauvegarder un nom composé.txt

Ces cas sont rares mais peuvent arriver. On peut essayer de faire le nécessaire pour qu'ils n'arrivent pas, mais souvent le plus simple est de ne pas utiliser la forme avec * mais de demander à rsync desynchroniser des répertoires, quelque chose comme : rsync -a --delete -e ssh ./ $DESTINATION/ (la présence des deux / finaux est importante)

C'est à tester dans le cas particulier décrit ici (selon le répertoire courant où l'on est, etc...) mais c'est normalement une forme plus robuste.

Patrick (26/09)