La commande rsync permet de copier et synchroniser rapidement et facilement des dossiers et répertoires sur différentes cibles.

L’aide de rsync

Pour accéder à l’aide de base, il faut utiliser la commande man rsync dans une fenêtre de shell.
Sous Ubuntu, le man est en Anglais, une traduction de cette page est disponible sur www.delafond.org. Une recherche sur votre moteur préféré donnera beaucoup de page d’exemple.

La syntaxe

La syntaxe est de la forme : rsync options source destination.

avec :

  • options : elles vont définir la façon dont la copie ou synchronisation va se réaliser (copie réelle ou simulation, garder les droits, exclure des fichiers …)
  • source : le répertoire ou fichier à sauvegarder
  • destination : l’adresse ou doit se faire la copie de sauvegarde, celle ci pouvant être locale ou distante

Les options de bases à retenir :

  • -a : mode archive, il est équivalent à l’utilisation combinée des options -rlptgoD
  • -l : copie les liens symbolique
  • -n : fait une simulation, aucun fichier ne sera copié (utile pour le debug !)
  • -p : préserve les droits sur les fichiers
  • -r : mode recursif, recopiera donc tous les dossiers et fichiers de la source
  • -t : maintien les dates
  • -v : verbose ou bavard
  • -q : quiet ou silencieux
  • -x : ne traverse pas les limites du système de fichier
  • -z : transfert les fichiers en mode compressé
  • –exclude-from=file : le fichier file contient une liste de fichiers ou de répertoires qui ne seront pas synchronisés
  • -P : combine les options –partial et –progress
  • –partial : n’efface pas les fichiers partiellement transférés en cas d’échec de transmission ce qui permet de relancerla synchronisation en profitant de ce qui a déja été réalisé
  • –progess : affiche un état de l’avancement de la synchronisation

Quelques examples

Copie locale

    rsync -Pavz  --exclude-from=$FicExclude $HOME /media/disk/test_rsync

Synchronise tous les fichiers et répertoire du Home Dir de l’utilisateur courant ($HOME) dans le répertoire test_sync du disque dur USB.
Le mode de transfert est compresé (z), l’avancement de la copie est affiché (Pv). Une liste d’exclusion a été définie dans FicExclude.

Copie distante

Pour réaliser la même copie sur une machine distante, il faut utiliser la commande :

    rsync -Pavz --exclude-from=$FicExclude $HOME $USER@$Serveur:$HOME/test_rsync

Dans cas, la copie du Home Dir de l’utilisateur courant se fera dans le Home Dir du même utilisateur ($HOME) de la machine distante $Serveur.
La machine distante peut être adressée par son adresse IP ou par un Hostname si la machine source est capable de résoudre le nom.

Fichier d’exclusion

Le fichier d’exclusion défini la liste des répertoires ou fichiers qui ne sont pas concernés par la synchronisation.
Exemple de fichier d’exclusion :

    # Les photos et les musiques sont sauvegardées sur une autres destination
    Photos
    Music
    # Le bureau ne contient que des raccourcis
    Desktop
    #
    Network
    # Par définition le temporaire n'a pas besoin d'être sauvegardé
    temp
    # la poubelle est exclue, ce qui a été supprimé a déja été sauvegardé
    .Trash
    # Fichiers cachés
    .cache
    .beagle
    .evolution
    .java
    .photozeec
    .thumbnails/normal
    # On peut relancer le téléchargement du contenu. Ce qui est utile a été classé ailleurs
    Downloads
    #
    #googleearth
    #google-earth
    #.googleearth