Rsync

De Cliss XXI
Révision datée du 11 juin 2009 à 18:08 par imported>SylvainBeucler (→‎Code de retour Unix)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

rsync synchronise unidirectionnellement un dossier source et un dossier de destination.

sauvegarde

Options à utiliser:

-aHS --delete-excluded --numeric-ids --exclude="..." ...

Optionnellement: -A (acl) et -X (attributs étendus)

--delete

Version 2: synonyme de --delete-before Version 3: synonyme de --delete-during / --del

  • --delete-before est un algorithme en 2 passes, supprime d'abord, copie ensuite
  • --delete-during est un algorithme en 1 passe, supprime au fur et à mesure
  • --delete-after est un algorithme en 2 passes, copie d'abord, efface ensuite

En cas d'erreur: la suppression des fichiers est annulée:

  • --delete-before: suppression dans tous les cas
  • --delete-during: suppression partielle
  • --delete-after: aucune suppression

Qu'est-ce qu'une erreur:

  • chmod 0 sur un répertoire (arrêt des suppressions non justifié)
  • une erreur disque (arrêt des suppressions justifié)

Ne pas confondre avec d'autres erreurs non critiques (cf. section "Code de retour Unix")

Forcer la suppression: --ignore-errors

Mode de comparaison

  • Par défaut: taille et date de dernière modification
  • Avec --checksum: utilisation d'une somme de contrôle (plus lent) - mais ce n'est PAS fait dans le cas courant

backuppc utilise --checksum-seed=XXXX avec XXXX constant pour améliorer les performances

Code de retour Unix

En cas d'erreur, le code n'est pas 0. Qu'est-ce qu'une erreur dans ce cas:

  • le fichier a changé pendant la sauvegarde (ex: fichier de log)
  • un fichier a disparu pendant la sauvegarde (ex: fichier de cache): some files vanished before they could be transferred (code 24)
  • erreur de permission: some files could not be transferred (code 23)
  • une erreur critique (cf. section "--delete"): IO error encountered -- skipping file deletion + code 23 ci-dessus


Simulation fichier qui disparaît:

term1$ mkdir a b
term2$ while true; do i=$(($RANDOM / 6553)); rm -f $i; i=$(($RANDOM / 6543)); touch $i; done
term1$ rsync -avHS a/ b/; echo $?

Simulation erreur de permission:

chmod 0 fichier

Similation erreur critique:

chmod 0 dossier/