rsync : copier et synchroniser des fichiers
Auteur : Rédaction Domeny.ForSale Publié le
En bref : rsync est un outil en ligne de commande qui permet de copier et de synchroniser des fichiers entre des répertoires ou des ordinateurs. Lors des exécutions suivantes, il ignore les fichiers considérés comme inchangés et, lors d’un transfert réseau, peut ne transmettre que les parties modifiées des données. Il sert à actualiser des copies de données et à transférer des fichiers sur un serveur, mais une simple synchronisation ne remplace pas une sauvegarde avec un historique des versions.
Comment fonctionne rsync et en quoi diffère-t-il d’une simple copie ?
rsync compare la source indiquée à la destination et détermine quels fichiers doivent être transférés. Par défaut, il détecte les changements principalement à partir de la taille du fichier et de sa date de modification. Il ne compare donc pas systématiquement l’intégralité du contenu de chaque fichier.
Pour les transferts réseau, rsync peut utiliser un algorithme différentiel, c’est-à-dire transmettre les parties manquantes ou modifiées plutôt que l’intégralité d’un fichier déjà présent. La première copie vers un répertoire vide nécessite toutefois de transférer toutes les données sélectionnées. Pour une copie locale, rsync transfère par défaut l’intégralité des fichiers à mettre à jour, car l’analyse de leurs différentes parties n’apporte pas toujours de bénéfice.
Supposons que vous ayez un répertoire de photos de produits sur votre ordinateur et une copie sur le serveur. Après l’ajout de cinq photos, l’exécution suivante de rsync transférera les nouveaux fichiers au lieu de recopier toute la collection. En revanche, supprimer une photo de la source ne la supprime pas automatiquement de la destination : cela nécessite une option distincte.
Sur quels systèmes peut-on utiliser rsync ?
rsync est couramment utilisé sous Linux et est également disponible sous macOS. Sous Windows, vous pouvez notamment l’utiliser via WSL, un environnement permettant d’exécuter des outils Linux. Pour vérifier la présence du programme et connaître sa version, utilisez la commande :
rsync --version
Si le programme n’est pas installé, installez-le avec le gestionnaire de paquets adapté à votre système. Consultez la documentation de votre distribution ou de la version du programme concernée pour connaître les détails de l’installation et les options disponibles.
Pour un transfert classique par SSH, rsync doit être installé sur les deux ordinateurs. SSH permet de se connecter à un ordinateur distant au moyen d’une connexion chiffrée. Vous avez également besoin d’un compte donnant accès au serveur et des droits de lecture sur la source et d’écriture sur la destination ; un simple accès par SFTP ne suffit pas toujours.
Première synchronisation, étape par étape
La syntaxe de base est rsync [options] source destination. Supposons que vous souhaitiez copier le contenu du répertoire projets dans le répertoire existant /mnt/sauvegarde/projets/. Commencez par une simulation, sans enregistrer de modifications :
rsync -av --dry-run --itemize-changes ~/projets/ /mnt/sauvegarde/projets/
Voici le rôle des options utilisées :
-a— mode archive : copie les sous-répertoires, conserve les liens symboliques et les métadonnées de base, dans les limites du système et des permissions.-v— affiche davantage d’informations sur le déroulement de l’opération.--dry-run— simule l’opération sans copier ni supprimer de fichiers.--itemize-changes— affiche la nature des changements prévus.
Vérifiez que les chemins et la liste des changements sont corrects. Si vous utilisez un disque externe, assurez-vous également qu’il est monté au bon emplacement. Lancez ensuite la copie réelle :
rsync -av --itemize-changes ~/projets/ /mnt/sauvegarde/projets/
La barre oblique à la fin du chemin source change le sens de la commande. La source ~/projets/ indique qu’il faut copier le contenu du répertoire. La source ~/projets indique qu’il faut copier le répertoire lui-même, avec son nom : si le répertoire de destination existe déjà, un niveau supplémentaire projets peut donc être créé.
Le mode -a ne conserve pas automatiquement toutes les propriétés possibles des fichiers. Par exemple, les listes de contrôle d’accès, les attributs étendus et les relations entre liens physiques nécessitent des options supplémentaires ainsi qu’une prise en charge des deux côtés.
Comment transférer des fichiers sur un serveur par SSH ?
Pour copier le contenu d’un répertoire local sur le serveur, vous pouvez utiliser le modèle ci-dessous. Remplacez le nom du compte, l’adresse du serveur et le chemin par vos propres valeurs :
rsync -av -e ssh --dry-run ./site/ utilisateur (at) serwer.example:/var/www/site/
L’option -e ssh indique le mode de connexion. Après avoir vérifié le résultat, retirez --dry-run pour effectuer le transfert. Lors de la première connexion, vérifiez l’empreinte de la clé du serveur à partir des informations fournies par l’administrateur, au lieu d’accepter son identité sans vérification.
Pour récupérer des fichiers, inversez l’ordre de la source et de la destination : le chemin distant doit figurer en premier. rsync fonctionne dans un seul sens à la fois : il ne réalise pas de synchronisation bidirectionnelle automatique et ne résout pas les conflits entre deux copies modifiées indépendamment.
Suppression de fichiers et limites de la sauvegarde
L’option --delete supprime du répertoire de destination synchronisé les fichiers absents de la source. Elle est utile pour créer une copie miroir, mais une erreur de chemin ou une source vide peuvent entraîner la perte de données nécessaires. Avant de l’utiliser, faites toujours une simulation avec --dry-run --itemize-changes et vérifiez les suppressions prévues.
Même sans --delete, rsync peut écraser une version antérieure d’un fichier. Il ne garantit pas non plus, à lui seul, une copie cohérente d’une base de données en cours d’utilisation : cela nécessite généralement un export de la base ou le mécanisme de sauvegarde proposé par son moteur.
Si ces données doivent permettre une restauration après une erreur ou une panne, prévoyez de conserver des versions antérieures ainsi qu’une copie distincte. Faites votre premier essai de rsync sur un petit répertoire de test, puis vérifiez que vous savez restaurer un fichier choisi à partir de la copie.
À lire aussi : Qu’est-ce que le 2FA ?
