documentation.suse.com / Copie de fichiers et de répertoires à l'aide de rsync
SUSE Linux Enterprise Server 16.0

Copie de fichiers et de répertoires à l'aide de rsync

Date de publication : 04 nov 2025
CONTENU

Vous pouvez utiliser l'outil rsync pour copier des fichiers en local ou à distance. rsync est unidirectionnel et ne peut copier des fichiers que dans un seul sens.

MOTIF

Cet article fournit une présentation de l'outil rsync et de son utilisation de base pour copier des fichiers localement et à distance.

EFFORT

Un maximum de 20 minutes est nécessaire pour comprendre l'utilisation de base de l'outil rsync.

OBJECTIF

Comprendre le fonctionnement fondamental de rsync et son utilisation pour les transferts de fichiers.

CONDITIONS REQUISES

Autorisations d'accès aux emplacements source et de destination pour la copie de fichiers.

1 Concept de rsync

Vous pouvez utiliser l'outil rsync pour transférer ou copier des fichiers en locale et à distance. rsync est unidirectionnel. Il copie les fichiers dans une seule direction et ne synchronise pas les données. Au lieu de transmettre tout le contenu du fichier, rsync minimise la quantité de données copiées en ne déplaçant que les modifications apportées dans le fichier. Cette méthode permet donc le transfert de données sur une connexion réseau lente.

Pour copier des fichiers volumineux à l'aide de rsync, la détection des modifications nécessite une certaine puissance de calcul. Veillez donc à ce que les machines, à l'emplacement source et de destination, disposent de suffisamment de ressources, y compris de mémoire vive.

Utilisez rsync lorsqu'une grande quantité de données ne contenant que des modifications mineures doit être transmise régulièrement. Ce programme est utile pour travailler avec des sauvegardes. rsync peut également servir à mettre en miroir des serveurs de transit qui stockent des arborescences complètes de serveurs Web sur un serveur Web dans une zone démilitarisée (DMZ).

Cet article fournit des exemples illustrant l'utilisation de rsync pour copier des fichiers en local et à distance. Ce document explique également comment configurer et utiliser un serveur rsync.

2 Utilisation de base de rsync

Vous pouvez utiliser rsync sur toute machine sur laquelle vous avez des droits d'accès et d'écriture.

Copiez les fichiers de l'emplacement source vers l'emplacement de destination, comme indiqué dans l'exemple suivant :

> rsync [OPTION] SOURCE [SOURCE]... DESTINATION

Vous pouvez avoir plusieurs entrées SOURCE et les marques de réservation SOURCE et DESTINATION peuvent être des chemins, des URL ou les deux.

Voici quelques cas d'utilisation de la copie de fichiers :

  • > rsync -av /directory1/ /destination/

    Dans l'exemple ci-dessus, la barre oblique qui suit le répertoire (directory) désigne le contenu du répertoire et non le répertoire proprement dit. Dans ce cas, seul le contenu de /directory1 est copié dans /destination.

  • > rsync -av /directory1 /destination/

    Dans l'exemple ci-dessus, le répertoire /directory1 est copié dans /destination, avec pour résultat /destination/directory1/.

  • > rsync -av example1.txt example2.txt /destination/directory/

    L'exemple ci-dessus montre la copie des fichiers example1.txt et example2.txt dans le répertoire de destination.

Les OPTIONS les plus couramment utilisées sont énumérées ci-dessous :

  • -V

    affiche le texte de la sortie verbeuse

  • -a

    mode archivage ; copie les fichiers de manière récursive et préserve les horodatages, la propriété de l'utilisateur/du groupe, les autorisations de fichiers ainsi que les liens symboliques

  • -z

    compresse les données transmises

  • -n ou --dry-run

    effectue un essai sans apporter aucune modification

  • -r

    traite les répertoires de manière récursive

  • --progress

    affiche la progression du transfert

  • -b

    effectue une sauvegarde pendant la synchronisation des données

  • -h

    affiche les chiffres de la sortie dans un format compréhensible

  • -e

    pour les transferts à distance, indique à rsync d'utiliser le protocole SSH

  • -q or --quiet

    met la commande rsync et la sortie des options en mode silencieux

  • --version

    imprime le numéro de la version de rsync et se ferme

Copie de fichiers en local avec compression
> rsync -avz example1.txt example2.txt /destination/

-a : mode archivage

-v : verbeux

-z : compresse les données pendant le transfert

Copie d'un répertoire avec compression
> rsync -avz /sourcedirectory/ /destinationdirectory/

Transfère le contenu de /sourcedirectory/ en le compressant.

Transfert de fichiers à distance avec compression
> rsync -avz example1.txt user@remote_host:/remote/destination/

Transfère example1.txt vers une machine distante via SSH en compressant les données.

Transfert d'un répertoire à distance avec compression
> rsync -avz /sourcedirectory/ user@remote_host:/remote/destination/

Transfère /sourcedirectory/ vers une machine distante via SSH en compressant les données.

3 Copie de fichiers et de répertoires en local à l'aide de rsync

Vous pouvez copier des fichiers sur la même machine à l'aide de rsync si vous disposez des droits d'écriture sur l'emplacement de destination.

Pour copier le fichier backup.tar.xz à l'emplacement /var/backup/, utilisez la commande rsync -avz backup.tar.xz /var/backup/.

Le fichier backup.tar.xz est copié dans /var/backup/, et le chemin d'accès absolu est /var/backup/backup.tar.xz.

4 Copie de fichiers et de répertoires à distance à l'aide de rsync

Vous pouvez copier des fichiers d'une machine vers une machine distante à l'aide de rsync. Assurez-vous que vous disposez de rsync sur les machines source et de destination et que vous êtes connecté à la machine distante via SSH.

Pour copier un seul fichier d'un répertoire de votre machine dans le répertoire /var/backup d'une machine distante, utilisez la commande suivante :

> rsync -avz example1.txt user@remote_host:/var/backup/
Note
Note : barre oblique finale

Veillez à ajouter une barre oblique après le répertoire /var/backup/. Si vous n'insérez pas la barre oblique, le fichier example1.txt est copié dans le fichier /var/backup et non dans le répertoire /var/backup/.

Vérifiez le fichier copié dans le chemin absolu /var/backup/example1.txt.

Pour copier le répertoire source/ et son contenu dans le répertoire /var/backup/ :

> rsync -avz /source/ user@remote_host:/var/backup/

Vérifiez le répertoire copié dans le chemin absolu /var/backup/source/.

5 Configuration et utilisation d'un serveur rsync

Un serveur rsync permet de synchroniser les fichiers, d'automatiser les sauvegardes et de centraliser le stockage. Vous pouvez exécuter rsync en tant que daemon rsyncd en écoutant les connexions entrantes sur le port par défaut 873. Ce daemon peut recevoir copying targets.

Procédure 1 : Configuration d'un serveur rsync

Le fichier de configuration du daemon rsync se compose d'un fichier principal et de certains modules qui contiennent votre cible de sauvegarde. Il est ainsi plus facile d'ajouter des cibles supplémentaires par la suite. Vous pouvez stocker les valeurs globales dans les fichiers /etc/rsyncd.d/*.inc, tandis que vos modules sont placés dans /etc/rsyncd.d/*.conf.

La description suivante explique comment créer un serveur rsync avec une cible de sauvegarde. Cette cible peut être utilisée pour stocker vos sauvegardes. Pour créer un serveur rsync, procédez comme suit :

  1. Sur votre machine locale, créez un répertoire /var/backup pour stocker tous vos fichiers de sauvegarde.

    > mkdir /var/backup
  2. Indiquez un propriétaire :

    Dans cet exemple, l'utilisateur tux du groupe users est propriétaire du répertoire :

    > chown tux.users /var/backup
  3. Configurez le daemon rsyncd :

    1. Créez un répertoire /etc/rsyncd.d/.

      > mkdir /etc/rsyncd.d/
    2. Créez le fichier de configuration principal /etc/rsyncd.conf et ajoutez-y les lignes suivantes :

      log file = /var/log/rsync.log1
      pid file = /var/lock/rsync.lock2
      merge /etc/rsyncd.d3
      include /etc/rsyncd.d4

      1

      /var/log/rsync.log est l'emplacement dans lequel rsync écrit les journaux.

      2

      /var/lock/rsync.lock est le fichier qui contient l'ID du processus de l'instance du daemon rsync en cours d'exécution.

      3

      Fusionne les valeurs globales des fichiers /etc/rsyncd.d/*.inc dans le fichier de configuration principal.

      4

      Charge tout module (ou cible) à partir des fichiers /etc/rsyncd.d/*.conf. Ces fichiers ne doivent pas contenir de références à des valeurs globales.

  4. Créez votre module ou votre cible de sauvegarde dans le fichier /etc/rsyncd.d/backup.conf avec les lignes suivantes :

    backup.conf: backup module
      [backup] 1
         uid = tux 2
         gid = users 3
         path = /var/backup 4
         auth users = tux 5
         secrets file = /etc/rsyncd.secrets 6
         comment = Our backup target 7

    Dans l'exemple donné :

    1

    [backup] est la cible de sauvegarde. Vous pouvez utiliser un nom de votre choix pour la cible de sauvegarde. Vous pouvez utiliser un nom qui indique son objectif et utiliser le même nom dans votre fichier *.conf.

    2

    uid = tux spécifie le nom d'utilisateur ou le nom de groupe utilisé lors du transfert de fichiers.

    3

    gid = users définit le chemin pour stocker vos sauvegardes (à partir de l'étape 1).

    4

    path = /var/backup définit le chemin pour stocker vos sauvegardes (à partir de l'étape 1).

    5

    auth users = tux spécifie une liste d'utilisateurs autorisés séparés par des virgules. Dans sa forme la plus simple, il contient les noms des utilisateurs autorisés à se connecter à ce module. Dans notre cas, seul l'utilisateur tux est autorisé à y accéder.

    6

    secrets file = /etc/rsyncd.secrets spécifie le chemin d'un fichier qui contient des lignes avec les noms d'utilisateur et les mots de passe en texte clair.

  5. Créez le fichier /etc/rsyncd.secrets avec le contenu suivant et remplacez PASSPHRASE :

    # user:passwd
    tux:PASSPHRASE
  6. Assurez-vous que le fichier n'est lisible que par l'utilisateur root :

    chmod 0600 /etc/rsyncd.secrets
  7. Démarrez et activez le daemon rsyncd :

    > systemctl enable rsyncd
    > systemctl start rsyncd
  8. Sur la machine distante, testez l'accès à votre serveur rsync :

    > rsync jupiter::

    Une réponse similaire à celle-ci apparaît :

    backup Our backup target

    Si la réponse ci-dessus n'apparaît pas, vérifiez votre fichier de configuration, votre pare-feu ainsi que vos paramètres réseau.

    Les étapes ci-dessus permettent de créer un serveur rsync que vous pouvez utiliser pour stocker des sauvegardes. Cet exemple crée également un fichier journal qui répertorie toutes les connexions. Ce fichier est stocké à l'emplacement : /var/log/rsyncd.log. Il est utile pour déboguer vos transferts.

  9. Pour répertorier le contenu de votre cible de sauvegarde, utilisez la commande suivante sur votre machine locale :

    > rsync -avz jupiter::backup

    Cette commande répertorie tous les fichiers présents dans le répertoire /var/backup sur le serveur. Cette requête est également consignée dans le fichier journal /var/log/rsyncd.log.

  10. Pour copier le répertoire actuel sur votre serveur de sauvegarde rsync, indiquez le répertoire source. Si le répertoire source est votre répertoire actuel, utilisez .

    > rsync -avz . jupiter::backup

    Par défaut, rsync ne supprime pas les fichiers ni les répertoires lors de son exécution. Pour autoriser la suppression, l'option supplémentaire --delete doit être indiquée. Pour être sûr qu'aucun fichier plus récent n'est supprimé, il est possible d'utiliser l'option --update à la place. Les conflits qui se présentent doivent être résolus manuellement.

6 Suppression de fichiers et de répertoires à l'aide de rsync

Vous pouvez copier et synchroniser des fichiers sur la même machine à l'aide de rsync si vous disposez des autorisations d'écriture sur l'emplacement de destination. Vous pouvez également supprimer des fichiers ou des répertoires après la copie.

Pour copier les fichiers example1.txt et example2.txt à partir de /source/directory/ dans le répertoire /destination/directory/ :

> rsync -av --update /source/directory/ /destination/directory/

La commande rsync met à jour les fichiers example1.txt et example2.txt dans le répertoire /destination/directory/ s'il est plus ancien que le fichier source. Si la version se trouvant dans la destination est plus récente, les fichiers ne seront pas écrasés. De même, tous les autres nouveaux fichiers ou répertoires de /source/directory/ seront copiés dans /destination/.

Pour copier un fichier existant et supprimer un fichier qui n'existe pas dans le répertoire de destination :

> rsync -av --delete /source/directory/ /destination/directory/

Dans ce scénario, les répertoires source et destination contiennent tous les fichiers example1.txt et example2.txt. Le répertoire /destination/directory contient un fichier supplémentaire, example3.txt.

La commande rsync copie ou met à jour les fichiers example1.txt et example2.txt du répertoire /source/directory/ dans le répertoire /destination/directory/. La commande supprime également le fichier example3.txt du répertoire /destination/directory/, puisqu'il n'existe pas dans le répertoire /source/directory/. De plus, la structure des répertoires dans /destination/directory/ est nettoyée pour correspondre à la structure des répertoires /source/directory/.

7 Dépannage de rsync

La copie d'un fichier ou d'un dossier peut échouer pour plusieurs raisons. Assurez-vous que vous disposez des autorisations et des ressources nécessaires pour effectuer la copie du fichier.

Vous trouverez ci-dessous des méthodes de dépannage possibles :

  • Vérifiez que vous disposez de la dernière version de rsync. Pour transférer des fichiers ou des répertoires à distance, assurez-vous que rsync est installé sur les machines source et de destination.

  • Vérifiez que vous disposez de l'autorisation d'accès à rsync.

  • Veillez à fournir le nom d'hôte correct pour copier les fichiers à distance.

  • Assurez-vous que le service rsync est en cours d'exécution si vous utilisez rsync en mode daemon.