Copier des fichiers d'un emplacement à un autre est une tâche assez basique et peut être facilement réalisée en utilisant la commande cp. Cependant, parfois, il faut en faire un peu plus. C'est là que la commande rsync vient, en particulier lorsque vous transférez des fichiers plus volumineux. Rsync (Remote Sync) est un outil de ligne de commande basé sur Linux qui peut être utilisé pour synchroniser et copier des fichiers entre des serveurs locaux et distants. Il permet la synchronisation de fichiers entre deux répertoires sur le même ordinateur, entre les répertoires de deux ordinateurs différents sur le même réseau, entre deux répertoires sur le système distant.
Le principal avantage de rsync est qu'au lieu de copier aveuglément tout le contenu, il analyse et transfère uniquement les différences entre la source et la destination, ce qui permet d'économiser les ressources système et la bande passante. Voici quelques autres avantages de rsync :
- Compresse les fichiers avant le transfert
- Peut afficher la barre de progression lors du transfert de données
- Le processus de copie peut être interrompu et repris plus tard
- Permet le transfert via une connexion SSH
Dans cet article, nous expliquerons comment utiliser rsync pour copier des données sous Linux. Nous utiliserons Debian 10 pour décrire la procédure mentionnée dans cet article.
Installation de Rsync
Rsync est installé par défaut sur la plupart des systèmes d'exploitation Linux. Cependant, s'il n'est pas installé, vous pouvez l'installer en suivant les étapes ci-dessous :
Lancez l'application Terminal dans votre système en allant dans les Activités dans le coin supérieur gauche de votre bureau Debian. Puis dans la barre de recherche, tapez terminal . Lorsque l'icône du terminal apparaît, cliquez dessus pour le lancer.
Exécutez maintenant la commande ci-dessous dans Terminal pour installer l'utilitaire rsync :
$ apt install rsync
Utiliser Rsync
Chaque commande rsync commence par rsync suivi d'une option dans laquelle vous pouvez spécifier divers paramètres. Rsync fournit un certain nombre d'options qui vous donnent le contrôle pour façonner les spécifications de transfert. Ensuite, il y a une source et une destination qui dépendent s'il s'agit d'une machine distante ou locale.
La syntaxe de base de rsync est :
$ rsync [option] [source] [destination]
Certaines des options générales utilisées avec les commandes rsync :
- -v :verbeux
- -a :mode archive, il permet de copier des fichiers de manière récursive et préserve les liens symboliques, les autorisations de fichiers, les propriétés des utilisateurs et des groupes et les horodatages
- -z :compresse les données
- -h :lisible par l'homme, il produit des nombres dans un format lisible par l'homme
- –max-size= SIZE, transférer des fichiers avec la SIZE minimale spécifiée
- –min-size= SIZE, transférer des fichiers avec la SIZE maximale spécifiée
Nous allons maintenant expliquer quelques exemples d'utilisation de rsync avec ces options.
Copier les fichiers et les répertoires sur le serveur local
Copier les fichiers localement
Vous pouvez copier un ou plusieurs fichiers d'un répertoire source vers le répertoire de destination sur la même machine. L'exemple serait de copier tous les .jpg fichiers de ~/Téléchargements répertoire vers le ~/Documents répertoire à l'aide de la commande suivante :
$ rsync -zvh /home/tin/Downloads/*.jpg /home/tin/Documents
Après avoir exécuté la commande ci-dessus, tous les fichiers .jpg fichiers dans le répertoire source /home/tin/Downloads sera copié dans le répertoire de destination /home/tin/Documents .
Dans l'exemple ci-dessus, nous avons utilisé les options comme -z pour la compression, -v pour une sortie détaillée et -h pour une sortie lisible par l'homme.
Copier les répertoires localement
Semblable aux fichiers, vous pouvez également copier l'intégralité du dossier et les fichiers contenus dans un répertoire à l'aide de la commande rsync. Un exemple serait de copier tous les fichiers de ~/Downloads répertoire vers le ~/Documents répertoire à l'aide de la commande suivante :
$ rsync -zavh /home/tin/Downloads/ /home/tin/Documents
Copier des fichiers sur un serveur distant
Vous pouvez copier un ou plusieurs fichiers d'un répertoire source vers un répertoire de destination sur une machine distante. Par exemple, pour copier les fichiers d'une machine locale vers une machine distante, utilisez la syntaxe de commande suivante :
$ rsync [options] [local path] [user]@[remote server]:[remote path]
Copier des fichiers en fonction de la taille maximale
Vous pouvez également spécifier la taille maximale du fichier pouvant être copié de la source à la destination à l'aide de rsync. Pour ce faire, utilisez la syntaxe de commande suivante :
$ rsync --max-size=”” [source] [destination]
Un exemple serait de copier des fichiers d'une taille maximale de 4000K à partir de la source ~/Downloads à destination ~/Documents annuaire. Dans ce cas, les fichiers d'une taille supérieure à 4 000 ko ne seront pas copiés vers la destination.
$ rsync --max-size=4000k /home/tin/Downloads/*.iso /home/tin/Documents/
Copier des fichiers en fonction de la taille minimale
De même, vous pouvez également spécifier la taille minimale pouvant être copiée de la source à la destination à l'aide de rsync. Pour ce faire, utilisez la syntaxe de commande suivante :
$ rsync --min-size=”” [source] [destination]
Un exemple de ceci serait de copier des fichiers d'une taille maximale de 2 Mo à partir de la source ~/Downloads à destination ~/Documents annuaire. Les fichiers dont la taille est inférieure à 2 Mo ne seront pas copiés à l'aide de rsync.
$ rsync --min-size=2M /home/tin/Downloads/*.iso /home/tin/Documents/
Afficher la progression
Vous pouvez également afficher la progression lors de la copie de fichiers à l'aide de rsync. Ajouter –progrès flag suivant la commande rsync comme indiqué ci-dessous :
$ rsync --progress [source] [destination]
Un exemple serait de voir la progression lors de la copie d'un fichier à partir de la source ~/Downloads à destination ~/Documents répertoire :
$ rsync --progress /home/tin/Downloads/VTS_03_1.VOB /home/tin/Documents
Exclure des fichiers
Vous pouvez également exclure certains fichiers lors de la copie des fichiers de la source vers la destination à l'aide de rsync. Un exemple serait d'exclure tous les fichiers .pdf lors de la copie de fichiers à partir de la source ~/Downloads à destination ~/Documents répertoire.
rsync -zavh --exclude="*.pdf" /home/tin/Downloads/ /home/tin/Documents
En entrant la commande suivante, tous les fichiers seront copiés de la source à la destination sauf .pdf fichiers.
C'est tout ce qu'il y a à faire ! Nous avons expliqué l'utilisation de base de l'utilitaire rsync pour copier des fichiers entre différents répertoires localement et à distance. Nous avons également expliqué quelques options rync courantes et utiles. Il y a tellement d'options autres que celles-ci que vous pouvez utiliser pour contrôler chaque aspect du comportement de transfert. Pour utiliser ces options, consultez les pages de manuel de rsync.