Catégories
Musique Reseau Systeme

Backup de sa bibliothéque musicale avec rsync

Voici un petit shell script permettant, depuis Mac OS X, de synchroniser votre bibliothèque musical iTunes vers un disque dur externe au format FAT32.

Si en plus ce disque est réseau (NAS), ce script sera une première étape dans le partager de votre bibliothéque iTunes entres les différents ordinateurs de votre réseau local (je parle ici d’un VRAI partage avec play-lists, notes, suppression, modification…). Mais j’y reviendrai dans un prochain article…

Script:

[shell]
#!/bin/sh
SRC="/Users/nicolargo/Music/iTunes/"
DST="/Volumes/DDEXT/MUSIC/iTunes"
RSYNC="/usr/bin/rsync -a -x -S -v –modify-window=1 –delete"
$RSYNC $SRC $DST
[/shell]

Détail des variables:

SRC: Emplacement de votre bibliothèque iTunes (à modifier selon votre configuration). A noter, le / en fin de ligne.

DST: Chemin d’accès vers votre disque dur externe ou réseau (à modifier selon votre configuration). A noter, l’absence de / en fin de ligne.

RSYNC: chemin et option vers rsync avec:

  • –modify-window=1: si vous faite une synchronisation vers un disque FAT32, cette option est obligatoire (sinon les fichiers seront recopiés intégralement à chaque synchronisation…)
    Remarque: si vous utilisez un disque externe formaté en HFS, il faut utiliser l’option -E en lieu et place de –modify-window=1
  • -a: synchronise l’ensemble des fichiers, répertoires et sous-répertoire
  • -x: ne pas écraser les fichiers systèmes
  • -S: gère de manière efficace les fichiers fragmentés.
  • -v: affiche ce que rsync fait
  • –delete: efface du disque dur externe les fichiers inexistants de votre bibliothèque iTunes.
Catégories
Open-source Systeme

Synchronisation de deux répertoires avec rsync

Rsync est un utilitaire présent sur tout les systèmes Unix (de Linux à FreeBSD en passant par Mac OS X et même sous Windows en passant par Cygwin) et ayant pour but la synchronisation de fichiers/répertoires. Cette synchronisation peut se faire soit de manière locale (par exemple deux répertoire d’un même disque) soit par le réseau (via le protocole SSH).

Un petit exemple valant mieux qu’un long discours…

Imaginons que l ‘on veuille synchroniser un répertoire (/home/nicolargo/src) avec un autre stocké sur une clés USB (/media/uskkey/dst).

Le répertoire src contient 3 fichiers:

ls /home/nicolargo/src

1

2

3

Le répertoire dst est vide:

ls /media/usbkey/dst

Pour synchroniser le répertoire dst avec le contenu du répertoire src, il faut saisir la commande suivant:

rsync –delete -av /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete

building file list … done

./

1

2

3

wrote 231 bytes read 80 bytes 622.00 bytes/sec

total size is 0 speedup is 0.00

/home/nicolargo/src est le répertoire source.

/media/usbkey/dst est le répertoire destination.

L’option -a (pour archive) permet de garder les propriétés des fichiers (droits, propriétaire, lien symbolique) intactes. L’option -v (verbose) permet d’afficher ce que fait rsync pendant sont exécution.

Si vous souhaitez que rsync ne créé par un répertoire src dans le répertoire dst mais qu’il mette directement les fichiers contenus dans src, il faut penser à mettre un / à la fin du répertoire source.

On vérifie que le répertoire destination contient bien les 3 fichiers.

ls /media/usbkey/dst

1

2

3

Nous allons maintenant vérifier que la commande « delete » fonctionne correctement. L’option –delete (noté le double – avant la commande) permet de supprimer dans le répertoire destination les fichiers non présents dans le répertoire source.

Nous pouvons le tester simplement en supprimant le fichier 1 du répertoire source:

rm /home/nicolargo/src/1

Puis en re-synchronisant:

rsync –delete -av /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete

building file list … done

deleting 1

./

wrote 104 bytes read 20 bytes 248.00 bytes/sec

total size is 0 speedup is 0.00

On vérifie que le répertoire destination contient seulement 2 fichiers.

ls /media/usbkey/dst

2

3

Quelques options utiles…

Rsync fourmille d’options (je vous laisse consulter le man page pour une liste exhaustive). Voici quelques options que je trouve utile de détailler.

Synchronisation à travers un tunnel SSH

Si votre répertoire destination se trouve sur une autre machine disposant d’un serveur SSH correctement configuré (nommé serveur dans mon exemple ci-dessous), il est possible de faire une synchronisation à travers le réseau grâce à la commande suivante:

rsync –delete  -avz -e ssh /home/nicolargo/src/ serveur:/home/nicolargo/dst

Attention: mettre deux – avant le delete

J’ai ici ajouté l’option -z afin de compresser les données avant de les envoyer dans le réseau.

Utilisation de Rsync comme d’un daemon

Il est possible de lancer Rsync en mode daemon en utilisant l’option –daemon. Dans ce cas, on peut se passer d’un serveur SSH. Le daemon écoutera (sur le port TCP/873) les requêtes de synchronisation venant de machine lancant Rsync en mode client (voir la syntaxe dans les chapitre précédant).

Vous trouverez un exemple de configuration de Rsync en mode daemon ici.

Exclure des fichiers de la synchronisation

Si l’on souhaite exclure certain fichier de la synchronisation, on peut utiliser l’option –exclude.

Exemple ou l’on souhaite synchroniser tous les fichiers sauf ceux ayant pour extension .log:

rsync –delete  -av –exclude « *.log » /home/nicolargo/src/ /media/usbkey/dst

Attention: mettre deux – avant le delete et le exclude

Et si je veux simuler

Très facile Simone, il suffit d’utiliser l’option -n. Utilisée avec l’option -v, on aura la liste des fichiers qui seront copiés ou effacés…

Pour finir…

Et voilà pour cette très courte introduction à ce précieux outils. Si vous utilisez ce logiciel et que vous avez des options intéressantes à expliquer, les commentaires sont fait pour ça 😉