rsync est un outil de ligne de commande gratuit qui vous permet de synchroniser des fichiers localement et à distance. Avec lui, vous pouvez transférer des fichiers et des répertoires.
Cela le rend très utile pour la migration des données, la réalisation de sauvegardes et la mise en miroir, ce qui le rend idéal pour les webmasters et les administrateurs pour les tâches récurrentes de transfert de données.
Cet article nous apprendra comment Rysnc fonctionne et donnera quelques exemples utiles.
Comment fonctionne rsync ?
rsync est un utilitaire de ligne de commande de synchronisation à distance pour les systèmes de type Unix. Il donne à l’utilisateur la possibilité de transférer/synchroniser des fichiers entre des machines ou deux hôtes de manière transparente.
Sous le capot, rsync utilise l’algorithme de transfert delta. Cet algorithme consiste à copier les différences entre les deux fichiers sur deux hôtes (source et destination). La source et la destination peuvent être locales ou distantes. La commande rsync peut effectuer des tâches de copie/synchronisation de données de deux manières. Ceux-ci sont:
- Utiliser ssh, rsh pour copier/synchroniser entre deux hôtes.
- Utiliser Démon TCP rsync pour copier/synchroniser.
Comme il est conçu pour fonctionner dans des systèmes de type Unix, il fonctionne également sous Linux.
Le processus étape par étape rsync utilise comme suit :
- Rsync utilise SSH pour se connecter à l’hôte distant et demande un mot de passe.
- Une fois connecté, le rsync de l’hôte distant communique avec la source.
- Ces programmes détermineront ensuite les fichiers et répertoires qui doivent être synchronisés. Il utilise un algorithme de transfert delta pour vérifier la différence entre les fichiers.
Si la commande rsync ne trouve pas de fichier sur la télécommande mais pas sur l’hôte, elle le copie et le transfère sur le système hôte. De même, pour les fichiers déjà existants (à la fois sur l’hôte et sur la télécommande), il copiera la différence entre eux (c’est-à-dire les parties modifiées). Enfin, il ignorera les fichiers existants sur les deux systèmes sans aucune modification.
La commande rsync réalise des mises à jour incrémentielles en stockant la différence dans un fichier temporaire avant de le pousser vers la destination.
Avant de commencer:
- Vous devez avoir les privilèges root ou sudo
- Avoir accès au terminal/ligne de commande
- Accès SSH pour exécuter en toute sécurité les commandes rsync
- Vous avez également besoin de deux machines pour faire rsync.
Pour le tutoriel, nous allons utiliser Linux Mint 21.1 Vera. Vous pouvez facilement suivre le guide sans problème en utilisant n’importe quelle autre distribution Linux.
Pourquoi utiliser rsync sur Scp ?
Scp (copie sécurisée) est un protocole de ligne de commande populaire qui permet aux utilisateurs de copier des fichiers. Il suit une approche linéaire de la copie. Cela signifie qu’il copie simplement les fichiers de la source à la destination. Pour le faire en toute sécurité, il utilise SSH.
La syntaxe de la commande scp est la suivante :
scp option SOURCE DESTINATION
Cependant, la question demeure, pourquoi utiliser rsync plutôt que scp ?
Eh bien, il y a plusieurs avantages à utiliser rsync. Ces avantages comprennent :
- Exécution plus rapide : rsync est plus rapide que scp car il utilise un protocole de mise à jour à distance. Cela lui permet de ne transférer que les différences plutôt que l’intégralité du fichier. Ainsi, si vous configurez une synchronisation régulière dans le temps, il vous suffit de faire une copie complète la première fois. À partir de la prochaine fois, il ne copie que les parties mises à jour à l’aide de l’algorithme de transfert delta.
- Moins de consommation de bande passante : Comme rsync n’a pas besoin de recopier l’intégralité du fichier, cela réduit la consommation de bande passante. De plus, il utilise également des algorithmes de compression/décompression pour minimiser la taille du fichier pendant le transfert.
- Plus d’options de ligne de commande : rsync bat également scp dans le nombre d’options de ligne de commande. Cela signifie que vous pouvez affiner rsync plus que scp.
En conclusion, rsync est un excellent outil de synchronisation incrémentale. L’outil scp est également utile pour transférer/synchroniser des fichiers en toute sécurité. Dans un scénario réel, scp convient aux tâches quotidiennes si vous recherchez une approche plus simple. Cependant, pour les tâches récurrentes, utilisez rsync.
Syntaxe de la commande rsync
La commande rsync est la suivante :
- Du local au local : option rsync SOURCE DEST
- Local à distant : option rsync SOURCE USER@HOST:DEST
- Distant vers local : option rsync USER@HOST:SRC DEST
Ici, les termes sont définis ci-dessous :
- OPTION – Ce sont les options rsync
- SOURCE – Répertoire des sources
- DEST – Répertoire de destination
- UTILISATEUR – Nom d’utilisateur distant
- HÉBERGER – Nom d’hôte ou adresse IP distant
Les options sont des paramètres qui offrent des fonctionnalités supplémentaires à la commande. Par exemple, vous pouvez synchroniser les données de manière récursive avec le option -r. Cependant, le option -r ne synchronise pas la propriété des groupes et des utilisateurs, les horodatages, les autorisations ou les liens symboliques. Au lieu de cela, vous pouvez utiliser le -une optionqui exécute la commande en mode archive, garantissant que la propriété, les autorisations et les liens symboliques du fichier sont conservés lors de la copie.
Les autres options de rsync incluent :
- -z : compresser les données pour économiser de l’espace
- -h : fournit une sortie au format lisible par l’homme
- -b : effectue une sauvegarde pendant le processus de synchronisation des données
- -e : utiliser le protocole SSH pour les transferts de données à distance
- -progrès: afficher la progression de la synchronisation des données
- -v : demander à rsync d’afficher une sortie détaillée
- –n : effectuer un essai à blanc pour tester les paramètres et configurer la synchronisation des données
- -q : supprimer la sortie et les options de la commande rsync
Installation de rsync
La plupart des systèmes Unix et Linux sont livrés avec rsync installé. Si votre système n’a pas rsync, vous pouvez l’installer en utilisant la ou les commandes suivantes.
Pour Debian/Ubuntu et Mint
sudo apt-get install rsync
Pour Arch Linux
pacman -S rsync
Sur Gentoo
emerge sys-apps/rsync
Sur CentOS/Fedora/REHL
sudo yum install rsync
Sur openSUSE
sudo zypper install rsync
Comme nous avons Linux Mint, rsync est pré-installé. Vous pouvez donc exécuter la commande rsync dans le terminal pour voir si elle est installée. Il expliquera ses capacités, ses options et d’autres informations vitales s’il est présent.
nitt ~
$ rsync
rsync version 3.2.3 protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
symtimes, prealloc, stop-at, no crtimes
Optimizations:
SIMD, no asm, openssl-crypto
Checksum list:
xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
zstd lz4 zlibx zlib none
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.
Voyons maintenant rsync en action avec différents cas d’utilisation.
Pour le tutoriel, nous allons créer deux répertoires.
- répertoire-source
- dest-répertoire
Pour cela, vous devez taper les commandes suivantes.
mkdir source-directory
mkdir dest-directory
De plus, nous devrons générer des fichiers pour faire fonctionner rsync. Créons donc des fichiers de test avec la commande ci-dessous.
touch source-directory/file{1..100}
Cela crée 100 fichiers vides dans le répertoire source. Vous pouvez le confirmer en entrant la commande ci-dessous.
ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Note: Nous avons gardé le répertoire dest vide.
Copier les répertoires localement de manière récursive
Même si rsync vise principalement à copier des fichiers entre un serveur local et distant, il est également utile pour copier des fichiers localement.
Dans ce cas, nous utiliserons la syntaxe rsync suivante.
option rsync SOURCE DESTINATION
Copiez les fichiers dans notre répertoire-source au dest-répertoire en exécutant la commande suivante.
rsync -r source-directory/ dest-directory
Ici, la commande copie «récursivement» les fichiers du répertoire-source au dest-répertoire.
nitt rsync-tutorial
$ ls
dest-directory source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Cela copie chaque fichier unique dans le répertoire-source au dest-répertoire.
Copier un seul fichier localement
Maintenant que nous avons appris à synchroniser deux répertoires, nous allons apprendre à copier un seul fichier.
Pour cela, nous allons éditer le fichier vide fichier1 dans le répertoire-source puis synchronisez-le avec le même fichier présent dans le dest-répertoire.
Pour modifier un fichier, tapez la commande suivante.
nano source-directory/file1
Maintenant, copiez-collez le texte suivant dans l’éditeur nano.
We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.
Maintenant, fermez et enregistrez le fichier.
Copions maintenant le fichier en utilisant rsync.
sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1
sent 557 bytes received 35 bytes 1,184.00 bytes/sec
total size is 474 speedup is 0.80
nitt rsync-tutorial
$
Comme vous l’avez peut-être remarqué, nous avons utilisé -existant option. Cela met à jour les fichiers existants. Si vous exécutez la commande sans -existantil ne sera pas mis à jour, même s’il s’exécute correctement.
Si le fichier unique que vous copiez n’existe pas dans le dossier de destination, vous devez exécuter la commande suivante.
rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile
sent 82 bytes received 35 bytes 234.00 bytes/sec
total size is 0 speedup is 0.00
Copier plusieurs fichiers
Si vous avez l’intention de copier plusieurs fichiers, vous devez mentionner les chemins source des deux fichiers, suivis du répertoire cible.
Pour cela, nous allons créer deux nouveaux fichiers : nouveaufichier2 et nouveaufichier3dans le répertoire-source. Exécutez la commande suivante pour ce faire.
touch source-directory/newfile{2..3}
Maintenant, utilisez la commande suivante pour synchroniser plusieurs fichiers.
rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3
sent 135 bytes received 54 bytes 378.00 bytes/sec
total size is 0 speedup is 0.00
nitt rsync-tutorial
$
Copier un fichier ou un répertoire de local à distant
La syntaxe rsync pour le transfert local vers distant est la suivante.
rsync option SOURCE USER@HOST:DEST
Comme vous pouvez le voir, vous devez connaître les adresse IP de la machine distante pour que cela fonctionne. De plus, vous devez ajouter l’adresse IP après le fichier source.
rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Avant de commencer le transfert, il vous demandera le mot de passe. Entrez-le pour continuer. De plus, si l’utilisateur est différent sur la machine distante, vous devez le mentionner avant l’adresse IP suivie de @.
rsync -av /Projects/rsync-tutorial/source-directory nithya@192.168.192.200: /Projects/rsync-tutorial/dest-directory
Si vous avez l’intention de copier plusieurs fichiers ou répertoires, vous devez répertorier les fichiers ou les chemins de répertoire. La syntaxe est ci-dessous.
rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Protocoles spécifiques au transfert à distance
rsync vous permet de spécifier des protocoles de transfert de fichiers spécifiques. Pour ce faire, vous devez utiliser le option -esuivi du protocole.
Par exemple, si vous souhaitez utiliser le protocole ssh, vous devez ajouter -e ssh à la commande rsync.
rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Copie d’un fichier ou d’un répertoire de distant vers local
La syntaxe rsync pour le transfert local vers distant est la suivante.
sync option USER@HOST:SRC DEST
Cela agit comme une demande d’extraction. Ainsi, pour obtenir les fichiers/répertoires requis d’un serveur distant vers votre ordinateur local, vous devez exécuter la commande suivante.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
La commande extrait les fichiers dans le dossier de la machine distante. dest-répertoire à la machine locale répertoire source.
De même, vous pouvez extraire un fichier spécifique en le mentionnant via son chemin complet.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory
Pour copier plusieurs fichiers ou répertoires de local à distant, vous devez spécifier le chemin entre accolades (séparés par des virgules) après l’adresse IP du serveur.
rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory
De même, vous pouvez également mentionner des fichiers.
Afficher la progression en direct pendant le transfert
C’est une bonne idée de voir la progression en direct pour les sauvegardes de données plus volumineuses. Pour cela, vous devez utiliser le -progrès drapeau. Ajoutez-le à la commande rsync et vous pourrez voir la vitesse de transfert, le temps restant et la quantité de données transférées.
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Supprimer les fichiers source une fois le transfert terminé
Vous pouvez utiliser le -remove-source-files drapeau pour supprimer les fichiers source après le transfert complet. Cela peut vous aider dans de nombreux scénarios, notamment lorsqu’il s’agit de sécuriser vos fichiers sans laisser de trace ou simplement de les utiliser pour libérer de l’espace.
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
rsync essai à blanc
Rysnc vous permet également d’évaluer avant de faire une course réelle. La simulation vous permet de voir si vous faites ce qu’il faut. Après tout, vous ne voulez pas mettre à jour des fichiers par erreur ou même les supprimer.
Vous devez utiliser le –marche à sec possibilité de faire un essai à blanc. Ajoutez-le à la commande, suivi de la source et de la destination.
sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1
sent 43 bytes received 19 bytes 124.00 bytes/sec
total size is 474 speedup is 7.65 (DRY RUN)
nitt rsync-tutorial
La sortie est similaire à la façon dont nous l’avons exécutée auparavant. Cependant, vous remarquerez une mention de (EXÉCUTION À SEC) à la fin de la sortie.
Définir la taille de fichier minimale et maximale
Rysnc vous permet également de définir la taille de fichier minimale ou maximale pendant le transfert.
Donc, si vous souhaitez transférer avec une taille minimale de 15 Ko, vous devez utiliser –taille-min=15K.
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
La commande ne copiera que les fichiers d’une taille de fichier minimale de 15 Ko. Si la taille du fichier est inférieure, il l’ignorera.
De même, vous pouvez utiliser le –indicateur de taille maximale pour définir la taille de fichier maximale.
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Ici, rsync ignorera les fichiers au-dessus de la taille de 450K.
Définir la limite de bande passante
Si vous effectuez d’autres tâches gourmandes en bande passante, vous pouvez configurer rysnc pour définir la limite de bande passante pour le transfert. Pour ce faire, utilisez le –bwlimit=Ko/s.
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Ici, nous définissons la bande passante sur 100Kb/s lors du transfert.
Derniers mots
Cela nous amène à la fin de notre guide de commande rsync. Nous avons appris à utiliser rysnc et couvert efficacement de nombreuses commandes.
Cependant, rysnc offre bien plus que ce que nous avons couvert. C’est pourquoi vous voudrez peut-être aussi passer par le page de manuel rsyncoù chaque aspect de rsync est couvert.
Ensuite, consultez les feuilles de triche de la ligne de commande pour Windows, Linux et macOS.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones