rsync

Publié le 17/01/2015

Pour transférer des fichiers de manière sécurisé, rien de mieux qu'SSH (ou qu'un disque externe coulé dans du béton. Au choix). [SCP](|filename|2013-03-25 scp-basics.md) permet par exemple de transférer des fichiers au travers du protocole ssh, mais ne gère pas la reprise d'un transfert échoué. Pour plus de fonctionnalités, il existe rsync, qui offre à nos petits yeux ébahis plein de nouvelles fonctionnalités super utiles: la reprise de transfert en cas de foirage complet, la synchronisation de dossiers, ... C'est un outil de sauvegarde pratique, sur lequel se basent notamment Duplicity et Deja-Dup.

Utilisation

$ rsync -r -P -e ssh login@server:path/ folder/

Dans l'exemple ci-dessus, les paramètres sont:

Parmi les autres paramètres intéressants:

Attention également aux / après les chemins vers les répertoires. Oubliez le, et cela créera un nouveau répertoire dans le répertoire cible. Ajoutez le pour ne synchroniser que le contenu.

Synology

Si vous comptez utiliser votre Synology comme répertoire de destination, il se peut que vous tombiez sur le message d'erreur suivant:

Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Si c'est le cas, vous devrez activer un service sur le NAS:

A présent, vous pourrez utiliser rsync pour transférer vos documents vers le NAS.

Mon but ici est de synchroniser mon profil utilisateur (~/ en gros). De nouveau, avec la commande ci-dessus, cela va synchroniser tous mes documents et fichiers. Problème: cela embarque également les dot files. Une solution pour ceci est d'ajouter le paramètre --exclude ".*".

Finalement

En combinant tous les paramètres, ma commande rsync ressemble est la suivante:

rsync -rtv -P -e "ssh -p 11111" my_folder/ login@server:path/ --exclude ".*" --delete

Sources