Copier et sauvegarder des fichiers et des dossiers à l'aide de l'utilitaire Rsync
Rsync est un outil rapide et polyvalent pour copier des fichiers et des dossiers. Cet utilitaire peut copier des données à la fois localement et vers d'autres hôtes, y compris le Cloud Storage d'INTROSERV. Les options de l'utilitaire vous permettent de contrôler de nombreux aspects de la copie et de la mise en miroir des données. Une fonctionnalité utile est la possibilité de compresser les données pendant le transfert, ce qui peut réduire le trafic réseau et améliorer la vitesse de transfert lorsque la bande passante réseau est le facteur limitant. Un autre avantage est que Rsync évite de transférer les fichiers qui n'ont pas besoin d'être mis à jour. Par défaut, il compare la taille du fichier et l'heure de modification, ne transférant que les fichiers qui semblent avoir changé, ce qui permet sans aucun doute de gagner du temps lors de la synchronisation de grands répertoires.
Pourquoi utiliser l'indicateur -a ? L'option -a (archive) est le choix le plus courant. Elle active la copie récursive et préserve les attributs de fichiers courants : permissions, propriétaire, groupe, heures de modification et liens symboliques. Comme -a inclut déjà la récursivité, il n'est pas nécessaire d'ajouter -r séparément.
Options de l'utilitaire
Examinons des exemples d'utilisation de Rsync pour copier des fichiers et des répertoires vers le Cloud Storage distant d'INTROSERV via le protocole SSH.
Ces commandes sont universelles. Il suffit de remplacer l'adresse de destination et le chemin pour synchroniser des fichiers avec n'importe quel serveur distant via SSH.
Voyons quelques-unes des principales options de l'utilitaire qui seront le plus souvent utilisées. Une liste plus détaillée des options disponibles est disponible dans la documentation man (commande man rsync) :
-v – affiche des informations détaillées sur le processus
-c – vérifie les sommes de contrôle des fichiers
-q – informations minimales
-a – mode archive
-R – chemins relatifs
-y – ne pas écraser les fichiers plus récents
-b – crée une copie de sauvegarde
-l – copie les liens symboliques
-L – copie le contenu des liens
-H – copie les liens physiques
-g – conserve le groupe
-p – conserve les autorisations de fichiers
-t – conserve l'heure de modification
-x – fonctionne uniquement dans ce système de fichiers
-e – utilise un autre protocole de transport (par exemple, ssh)
-z – compresse les fichiers avant le transfert
--delete – supprime les fichiers qui ne sont pas dans la source
--exclude – exclut des fichiers
--recursive – énumère les répertoires de manière récursive
--no-recursive – désactive la récursivité
--progress – affiche la progression du transfert de fichiers
--stat – affiche les statistiques de transfert
--max-size – taille maximale de fichier pour le transfert
--bwlimit – limite de vitesse pour les transferts de fichiers
Brève explication de la syntaxe
La règle de la barre oblique finale (/). C'est ici que la plupart des utilisateurs font des erreurs : /dossier (sans barre oblique) copie le dossier lui-même. /dossier/ (avec barre oblique) copie uniquement le contenu du dossier.
rsync -az --progress /home/user/test.file boxxxx@storage_ip:/remote_folder/
-a – mode archive : une copie récursive qui préserve les attributs de fichiers
-z – compresse les données pendant le transfert
--progress – affiche la progression du transfert
/home/user/test.file – il s'agit du chemin vers le fichier et du fichier réel à transférer
boxxxx@storage_ip: – il s'agit de la ressource de destination (dans notre exemple, il s'agit du stockage cloud, mais il peut également s'agir d'un serveur distant). boxxxx est le nom d'utilisateur, après le signe @ se trouve le nom de la ressource ou l'adresse IP du serveur distant
/remote_folder/ – il s'agit d'un dossier sur une ressource distante. Dans notre exemple, dans INTROSERV Cloud Storage.
Copier un fichier vers un dossier sur un stockage distant
rsync -az --progress /home/user/Desktop/test.file boxxxx@storage_ip:/remote_folder/
Un mot de passe vous sera demandé pour vous connecter au stockage. Saisissez le mot de passe et continuez ; vous verrez la progression et la vitesse de transfert du fichier.
Copier un dossier vers le dossier sur un stockage distant
Faites attention aux barres obliques dans les lignes du dossier source et du dossier de destination. L'absence de barre oblique dans le dossier source indique que nous voulons transférer le dossier local Desktop lui-même, avec tout son contenu, dans le dossier remote_folder.
rsync -az --progress /home/user/Desktop boxxxx@storage_ip:/remote_folder/
Vous verrez le répertoire et tous les fichiers qu'il contient être transférés.
Copier le contenu d'un dossier local vers un dossier sur un stockage distant
Faites attention à la barre oblique à la fin du dossier source. Sa présence indique que l'utilitaire doit copier le contenu du dossier local vers un dossier sur le stockage distant.
rsync -az --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Vous verrez la progression et la vitesse de copie.
Copier un dossier depuis un stockage distant vers un dossier du serveur local
Avec Rsync, vous pouvez lancer la copie d'un dossier depuis un stockage distant. La commande se présente comme suit :
rsync -az --progress boxxxx@storage_ip:/remote_folder /home/user/Desktop/
Vous verrez la progression et la vitesse de copie d'un dossier distant vers un dossier sur le serveur local.
Copier le contenu d'un dossier depuis un stockage distant vers un dossier du serveur local
Ici aussi, il convient de faire attention à la barre oblique à la fin du chemin du dossier source. Sa présence indique que seul le contenu du dossier doit être copié.
rsync -az --progress boxxxx@storage_ip:/remote_folder/ /home/user/Desktop/
Copier le contenu d'un dossier en excluant et/ou en incluant des fichiers
L'utilitaire vous permet de spécifier explicitement quels fichiers transférer et lesquels exclure. Pour ce faire, utilisez les options --include et --exclude. Les règles sont traitées dans l'ordre, une règle d'inclusion doit donc précéder une règle d'exclusion qui, autrement, s'appliquerait au même fichier.
Testez avec une exécution à blanc. Avant d'exécuter une commande qui modifie ou supprime de nombreux fichiers, ajoutez l'indicateur -n ou --dry-run. Rsync vous montrera exactement ce qu'il ferait sans réellement déplacer ni supprimer quoi que ce soit.
rsync -az --progress --include='test.file' --exclude='*' /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Cette commande transfère test.file et exclut tout le reste dans le répertoire source. C'est la règle --exclude='*' qui limite le transfert au seul fichier inclus, c'est pourquoi les deux options sont nécessaires ensemble ici.
Copier uniquement les fichiers différents des fichiers du dossier de destination
Par défaut, Rsync décide si un fichier doit être transféré en fonction de sa taille et de son heure de modification. Utilisez l'option -c lorsque vous souhaitez que Rsync compare plutôt le contenu des fichiers par somme de contrôle. Cette méthode est plus fiable lorsque les horodatages ne peuvent pas être fiables, mais elle est plus lente, car les deux parties doivent lire les fichiers pour calculer les sommes de contrôle.
rsync -azc --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Avec -c, Rsync compare le contenu des fichiers source et de destination à l'aide de sommes de contrôle et ne transfère que les fichiers dont le contenu diffère.
Utilisation de Rsync via SSH avec un port SSH non standard
Pour transférer des fichiers depuis/vers un serveur dont le port SSH a été modifié, utilisez l'option -e 'ssh -p port_number'.
La commande pour copier un fichier vers un serveur dont le port SSH a été changé en 44 se présente comme suit :
rsync -azc --progress -e 'ssh -p 44' /home/user/Desktop/ user@server_ip:/remote_folder/
Remarque de sécurité : Modifier le port SSH par défaut peut réduire les analyses automatisées et les tentatives de connexion indésirables, mais ne remplace pas une sécurité SSH appropriée telle que l'authentification par clé et les règles de pare-feu. Assurez-vous toujours que votre pare-feu autorise le trafic sur le port choisi.