Transférer des fichiers d’un serveur à un autre avec rsync

Il arrive très souvent que l’on ait besoin de transférer des fichiers rapidement, d’un serveur à un autre par exemple. Bien sûr, on peut utiliser le FTP mais il y a beaucoup plus rapide et efficace : je vous présente rsync.

Synchronisation distante

rsync logo Transférer des fichiers dun serveur à un autre avec rsyncrsync (remote synchronization ou “synchronisation distante” en français) est un logiciel libre de synchronisation de fichiers (disponible sous toutes les plateformes) : la synchronisation est unidirectionnelle, c’est-à-dire qu’elle copie les fichiers de la source en direction de la destination.

rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour diffuser le contenu d’un répertoire de référence.

Je vous donne ici les deux commandes que j’utilise quotidiennement lors de ma gestion des serveurs.

Copier tous les fichiers d’un répertoire du serveur A dans le répertoire équivalent du serveur B

Premièrement, connectez-vous via SSH à votre serveur A. Voici la commande :

/* Copie tous les fichiers de /home/website/ vers serveur B. */
rsync --ignore-existing --progress /home/movies/*.* matt@serveurB.net:/home/movies/

Explications :

  • --ignore-existing signifie que si le fichier existe déjà, on ne le remplace pas.
  • --progress montre la vitesse du transfert et les noms des fichiers transférés.
  • matt@serveurB.net est le nom du login SSH (matt) associé à l’adresse du serveur B (IP ou nom de domaine).
  • /home/website/ : répertoire vers lequel copier les fichiers.

En lançant cette commande, je récupère sur le serveur B tous les fichiers qui se trouvent dans le répertoire /home/movies/ du serveur A. Je ne remplace pas les fichiers existants : étant donné que je ne synchronise qu’avec rsync, ce serait inutile.

Copier tous les fichiers et sous-répertoires d’un répertoire (synchronisation récursive) sur le serveur B

/* Copie tous les fichiers et sous-dossiers de /home/series/ sur serveur B. */
rsync --ignore-existing --progress -r /home/series/*.* matt@serveurB.net:/home/series/

Explications : -r signifie de manière récursive, c’est-à-dire que tous les fichiers et sous-dossiers du répertoire /home/series/ seront copiés sur le serveur B.

C’est idéal pour sauvegarder les fichiers du site ou les ressources statiques. On lance la commande dans le terminal et hop, on peut aller se faire un café, tout tourne en fond de tâche.

Petit exemple fictif

Allez, juste pour le fun, voici un transfert initié avec rsync entre deux serveurs distants d’à peu près 8 000 kilomètres :

rsync speeds Transférer des fichiers dun serveur à un autre avec rsync

Bref, rsync, ça dépote et c’est une commande extrêmement pratique à l’usage.


2 commentaires

  1. olmon a écrit :
    1

    Merci Matt pour ce petit tuto.
    root@184.82.118.228 :
    pwd ?
    lol.

    • Matt a écrit :
      1.1

      J’ai pris une seedbox pour un mois histoire de tester et d’étudier comment ça fonctionnait, c’est pour ça que je n’ai pas flouté l’IP ;-)

quick-menu

Laisser un commentaire


Si vous possédez un compte, connectez-vous.

Me tenir informé(e) des futurs commentaires. Ou abonnez-vous sans commenter.

cook