Comment utiliser l’utilitaire rsync sous Linux pour gérer des fichiers sur un réseau

rsync (Remote Sync) est un utilitaire Linux puissant et efficace qui permet de synchroniser des fichiers et des répertoires entre deux emplacements sur un réseau. Il est couramment utilisé pour les sauvegardes, la mise en miroir des données et le transfert efficace de fichiers en ne copiant que les différences entre la source et la destination.

Ce guide vous guidera à travers l’installation, l’utilisation de base et les techniques avancées de rsync pour vous aider à gérer efficacement les fichiers sur un réseau.

Installation de rsync

La plupart des distributions Linux sont livrées avec rsync préinstallé. Pour vérifier s’il est installé, exécutez

rsync --version

S’il n’est pas installé, vous pouvez l’installer en utilisant le gestionnaire de paquets de votre distribution :

  • Debian/Ubuntu:
    sudo apt install rsync
  • RHEL/CentOS:
    sudo yum install rsync
  • Fedora:
    sudo dnf install rsync
  • Arch Linux:
    sudo pacman -S rsync

📌 Comment transférer des fichiers de Windows vers un serveur distant en utilisant rsync via PuTTY SSH ?
Pour utiliser rsync sur Windows via PuTTY SSH, vous devez avoir installé :

PuTTY pour la connexionSSH
rsync et OpenSSH sur Windows
Pagent (optionnel) pour l’authentification automatique avec la clé SSH

Installer rsync sur Windows à l’aide de MSYS2

Si vous avez téléchargé MSYS2, vous pouvez installer rsync facilement en utilisant pacman, le gestionnaire de paquets de MSYS2.

  • Mettre à jour MSYS2 et les paquets existants
    Dans le terminal MSYS2, exécutez :

pacman -Syu

  • Si MSYS2 se ferme automatiquement après la mise à jour, ouvrez-le à nouveau et exécutez :

pacman -Su
cette étape permet de s’assurer que vous disposez de la dernière version du gestionnaire de paquets.

  • Installer rsync
    Installez maintenant rsync en utilisant :

pacman -S rsync


💡 Si vous avez besoin d’openssh pour le transfert SSH, installez-le aussi :

pacman -S openssh

Vérifier l’installation
Pour vérifier que rsync a été installé correctement, exécutez :

rsync --version

Syntaxe de base de rsync

La syntaxe de base de rsync est la suivante :

rsync [options] source destination

Options couramment utilisées

  • a: Mode archive (préserve les liens symboliques, les permissions, les horodatages, etc.)
  • v: Sortie verbeuse
  • z : Compression des données du fichier pendant le transfert
  • P: Afficher la progression du transfert
  • r: Copie récursive des répertoires
  • e : Spécifie le shell distant (comme SSH)

Utilisation de rsync pour la synchronisation de fichiers locaux

Pour synchroniser des fichiers entre deux répertoires locaux :

rsync -av /source/répertoire/ /destination/répertoire/

La barre oblique / dans la source garantit que seul le contenu du répertoire est copié, et non le répertoire lui-même.

Utilisation de rsync sur un réseau

Transfert de fichiers vers un serveur distant

Pour transférer des fichiers d’un système local vers un serveur distant :

rsync -avz /local/répertoire/ user@remote_host:/remote/répertoire/

*Après avoir ajouté la commande dans MSYS2, nous ajouterons les données SSH pour nous connecter au serveur distant et le résultat sera affiché :

Cette commande permet de copier en toute sécurité les fichiers sur le serveur distant à l’aide de SSH.

Vérifiez si la commande a été exécutée avec succès sur votre serveur distant:

ls -lah /home/user/test_backup/ [put_your_directory]

Transfert de fichiers d’un serveur distant vers une machine locale

Pour copier des fichiers d’un serveur distant vers votre machine locale. Par défaut, rsync utilise SSH pour une communication sécurisée. Vous pouvez spécifier explicitement SSH avec :

rsync -avz -e ssh /local/répertoire/ user@remote_host:/remote/répertoire/

Si SSH utilise un port autre que celui par défaut (par exemple, 2222), spécifiez-le comme suit :

rsync -avz -e "ssh -p 2222" /local/répertoire/ user@remote_host:/remote/répertoire/

Synchronisation et suppression des fichiers supplémentaires

Pour supprimer des fichiers supplémentaires dans la destination qui ne sont pas présents dans la source :

La première étape consiste à ajouter des fichiers supplémentaires dans le terminal PuttySSH :

cd /home/user/test_backup/

touch file1.txt file2.log file3.jpg

mkdir extra_files

touch extra_files/old_file.txt

Maintenant, synchronisez le répertoire sans certains fichiers, et rsync supprimera les fichiers qui ne sont plus dans la source :

rsync -av --delete /source/répertoire/ /destination/répertoire/

qu’est-ce que cela fait ?
Tous les fichiers qui se trouvent sur le serveur mais PAS dans test/local seront supprimés.

Résultat MSYS2

Résultat de PuttySSH

Attention : Utilisez –delete avec précaution, car il supprime définitivement les fichiers de la destination.

Exclusion de fichiers et de répertoires

Pour exclure des fichiers ou des répertoires spécifiques :

rsync -av --exclude 'fichier_ou_répertoire' /source/ user@remote_host:/destination/
Résultat MSYS2

Résultat PuttySSH

Pour des exclusions multiples, utilisez :

rsync -av --exclude={'file1', 'dir1','*.log'} /source/ user@remote_host:/destination/

Exécution de rsync en tant que processus d’arrière-plan

Vous pouvez exécuter rsync en arrière-plan à l’aide de nohup:

nohup rsync -avz /source/ user@remote_host:/destination/ 

Cela permet au processus de se poursuivre même après la déconnexion.

Dans la directive locale, nous avons ajouté un nouveau fichier new_file.txt333333, puis nous avons déconnecté le terminal PuttySSH, et la commande ci-dessus nous permet d’envoyer des fichiers même lorsque le serveur est déconnecté.

Automatiser les transferts de fichiers avec les tâches Cron

Pour programmer une synchronisation automatique à l’aide de cron, ouvrez la crontab :

crontab -e

Ajoutez une tâche pour exécuter rsync tous les jours à minuit :

0 0 * * * rsync -avz /source/ user@remote_host:/destination/

Conclusion

rsync est un outil polyvalent et puissant pour la synchronisation et le transfert de fichiers sur un réseau. Qu’il s’agisse de sauvegarder des données, de mettre en miroir des répertoires ou de migrer des fichiers entre des serveurs, rsync offre une solution efficace et fiable. En tirant parti de ses diverses options et de ses capacités d’automatisation, vous pouvez gérer efficacement vos fichiers dans les environnements Linux.