Lorsqu'il s'agit de transférer des fichiers entre systèmes sur le réseau, les utilisateurs Linux et Unix disposent de nombreux outils.
Les protocoles les plus populaires pour le transfert de données sont SSH et FTP. Bien que FTP soit très populaire, préférez toujours utiliser SSH car c'est le moyen le plus sûr de transférer vos fichiers.
Il existe des outils spécialisés pour le transfert de fichiers via SSH tels que scp
et sftp
mais aucun d'entre eux n'a toutes les fonctionnalités que rsync
fournit. rsync
peut être utilisé pour mettre en miroir des données, des sauvegardes incrémentielles, copier des fichiers entre des systèmes, etc.
Dans ce tutoriel, nous allons vous expliquer comment copier des fichiers avec rsync
sur SSH.
Exigences #
-
Le
rsync
L'utilitaire doit être installé à la fois sur les systèmes de destination et source. S'il n'est pas installé, vous pouvez l'installer à l'aide du gestionnaire de packages de votre distribution :Ubuntu et Debian :
sudo apt install rsync
CentOS et Fedora :
sudo yum install rsync
-
Accès SSH à l'ordinateur distant.
-
L'utilisateur exécutant le
rsync
commande et l'utilisateur SSH distant doivent disposer des autorisations appropriées pour lire et écrire des fichiers.
Utilisation de rsync
pour transférer des fichiers via SSH #
Avec rsync
, vous pouvez transférer des fichiers et des répertoires via SSH depuis et vers des serveurs distants.
La syntaxe générale pour transférer des fichiers avec rsync
est le suivant :
Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]
Où SRC
est le répertoire source, DEST
est le répertoire de destination USER
est le nom d'utilisateur SSH distant et HOST
est l'hôte SSH distant ou l'adresse IP.
Les nouvelles versions de rsync sont configurées pour utiliser SSH comme shell distant par défaut afin que vous puissiez omettre le -e ssh
option.
Par exemple, pour transférer un seul fichier /opt/file.zip
du système local vers /var/www/
répertoire sur le système distant avec IP 12.12.12.12
vous exécuteriez :
rsync -a /opt/file.zip [email protected]:/var/www/
Le -a
L'option représente le mode d'archivage qui synchronise les répertoires de manière récursive, transfère les périphériques spéciaux et bloque, conserve les liens symboliques, les heures de modification, le groupe, la propriété et les autorisations.
Si vous n'avez pas défini de connexion SSH sans mot de passe sur la machine distante, vous serez invité à saisir le mot de passe utilisateur.
Si le fichier existe sur le serveur distant, il sera écrasé. Si vous souhaitez enregistrer le fichier sous un autre nom, indiquez le nouveau nom :
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
Pour transférer des données d'une machine distante vers une machine locale, utilisez l'emplacement distant comme source et l'emplacement local comme destination :
rsync -a [email protected]:/var/www/file.zip /opt/
Transférer des répertoires avec rsync
via SSH équivaut à transférer des fichiers.
Il est important de savoir que rsync
donne un traitement différent aux répertoires source avec une barre oblique /
. Lorsque le répertoire source a une barre oblique finale, rsync
copiera uniquement le contenu du répertoire source dans le répertoire de destination. Lorsque la barre oblique finale est omise, le répertoire source sera copié dans le répertoire de destination.
Par exemple pour transférer le /opt/website/images/
local répertoire vers le /var/www/images/
répertoire sur une machine distante, vous taperiez :
rsync -a /home/linuxize/images/ [email protected]:/var/www/images/
Utilisez le --delete
option si vous souhaitez synchroniser le répertoire local et distant. Soyez prudent lorsque vous utilisez cette option car elle supprimera les fichiers du répertoire de destination s'ils n'existent pas dans le répertoire source.
rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/
Si SSH sur l'hôte distant écoute sur un port autre que le 22
par défaut , spécifiez le port en utilisant le -e
option. Par exemple, si SSH écoute sur le port 3322
vous utiliseriez :
rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/
Lors du transfert de grandes quantités de données, il est recommandé d'exécuter le rsync
commande à l'intérieur d'une session d'écran ou utilisez le -P
option qui indique rsync
pour afficher une barre de progression pendant le transfert et conserver les fichiers partiellement transférés :
rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/
Conclusion #
Nous vous avons montré comment utiliser rsync
sur SSH pour copier et synchroniser des fichiers et des répertoires.
Vous pouvez également lire comment exclure des fichiers ou des répertoires avec rsync
.
N'hésitez pas à laisser un commentaire si vous avez des questions.