$
#
<
#
*
[
@
/

NOUS LES DEVS

rsync

De la synchronisation dans l'air

Niveau : intermédiaire
</> </> </>

C'est quoi ?

Alors rsync c’est un programme qui permet de faire de la synchronisation à distance. Tu vas principalement l’utiliser pour faire des backups de tes sites sur un serveur de sauvegarde.

Pourquoi ?

Ok, là tu vas me dire pourquoi ne pas utiliser FileZilla, c’est un logiciel super simple et qui marche très bien… Ou pas !

Il y a quelques jours, j’ai archivé un site, un très gros site… Un mix entre le dinosaure et le mastodonte, tu vois le genre ? Et certains répertoires contenaient tellement de fichiers que FileZilla était incapable de les télécharger, dû à une limite d’affichage dans les répertoires qui est de 4998 éléments (dans la version que j’utilisais). Et donc pour le coup j’ai « fail » toute la sauvegarde, et le pire c’est qu’il n’y a pas de vérification entre les fichiers téléchargés et les fichiers qui sont sur le serveur, le coco il ne te dit même pas si des fichiers manquent.

Tu as remarqué, dès que j’écris un article sur les lignes de commandes, c’est que j’ai eu une merde pendant la semaine…

Rsync dans la pratique

Pour mon premier test, j’ai fait deux dossiers sur mon bureau. Dans l’un j’ai mis plusieurs fichiers et j’ai laissé l’autre totalement vide, je te conseille de faire l’exercice pour bien comprendre la commande.

Utilise la commande rsync suivante, avec comme paramètre la source et le chemin de destination.

rsync -a /Users/yann/repertoire_source/ /Users/yann/repertoire_destination/

J’ai utilisé l’option a qui veut dire archive et qui permet d’avoir de la récursion. Comme pour la commande zip, les options se rapprochent fortement, l’option v correspond au monde verbose, z permet de compresser avant l’envoi et e, pratiquement l’option la plus importante, est celle qui te permet de définir une connexion en ssh.

Voici un exemple typique de rsync en SSH.

rsync -e ssh -avz root@127.0.0.1:/var/www/vhosts/mon_site/ /Users/yann/Desktop/dossier_de_backup/

Uploader des fichiers

Si j’utilise cette commande, c’est dans un but bien précis. Celui de transférer un site d’un hébergement à un autre, donc j’ai choisi de le rapatrier en local avant de le repousser, mais j’aurais très bien pu l’envoyer directement sur l’autre serveur.

Dans l’exemple ci-dessous, je synchronise tous les fichiers de mon répertoire local « dossier_de_backup » vers le répertoire à distance « mon_site » :

rsync -e ssh -avz /Users/yann/Desktop/dossier_de_backup/ root@127.0.0.1:/var/www/vhosts/mon_site/

Théorie et pratique

Je te l’accorde, dans la théorie c’est super simple mais dans la pratique, la commande est super dégueulasse à écrire dans le sens où il ne faut pas faire la moindre erreur lors de l’écriture des chemins. Mais elle est extrêmement puissante !

26/09/2015

Yann Vangampelaere - nouslesdevs -

NOUS LES DEVS

Vous aimez ce que je fais ? Vous voulez que j'en fasse plus ? dans le développement du blog.