Les administrateurs (ou les utilisateurs normaux) ont souvent besoin de sauvegarder des fichiers ou de les synchroniser entre plusieurs emplacements (y compris locaux et distants) sans transférer et écraser tous les fichiers sur la cible à chaque fois. L'un des outils les plus utiles dans la ceinture d'un administrateur système pour ce genre de tâche est rsync
.
Le rsync
L'outil peut naviguer de manière récursive dans une structure de répertoires et mettre à jour un deuxième emplacement avec tous les fichiers nouveaux/modifiés/supprimés. Il vérifie si des fichiers existent dans la destination avant de les envoyer, économisant de la bande passante et du temps pour tout ce qu'il saute. Aussi, rsync
offre la possibilité de synchroniser une structure de répertoires (ou même un seul fichier) avec une autre destination, locale ou distante. Pour accomplir cela efficacement, par défaut, il vérifiera les heures de modification des fichiers. Il peut également effectuer une vérification de hachage rapide des fichiers sur la source et la destination pour déterminer s'il doit ou non transférer une nouvelle copie, ce qui peut économiser beaucoup de temps et de bande passante.
[ Vous pourriez également aimer : 5 astuces rsync avancées pour les administrateurs système Linux ]
Comme il est fourni par défaut avec la plupart des distributions Linux, il devrait être facile de démarrer. C'est également le cas avec macOS, *BSD et d'autres systèmes d'exploitation de type Unix. Travailler avec rsync
est facile et peut être utilisé sur la ligne de commande, dans des scripts, et certains outils l'intègrent dans une interface utilisateur agréable pour gérer les tâches.
Sur la ligne de commande, rsync
est généralement appelé à l'aide d'une poignée de paramètres pour définir son comportement, car il s'agit d'un outil flexible. Dans sa forme la plus simple, rsync
peut être dit de s'assurer qu'un fichier dans un emplacement doit être le même dans un deuxième emplacement dans un système de fichiers.
Exemple :
# rsync file1.txt file2.txt
Il est généralement souhaitable de passer rsync
quelques paramètres pour s'assurer que les choses se comportent comme un humain s'y attendrait. Passer des paramètres tels que -a
pour "archive" est assez courant car il s'agit d'un "méta-paramètre" qui invoque automatiquement une poignée d'autres pour vous. Le -a
est équivalent à -rlptgoD
, qui se décompose en :
-r
:Parcourir les répertoires (au lieu de ne travailler que sur les fichiers du répertoire courant)-l
:Copier les liens symboliques en tant que nouveaux liens symboliques-p
:Préserver les autorisations-t
:Conserver les heures de modification-g
:Préserver la propriété du groupe-o
:Préserver la propriété de l'utilisateur (qui est limitée aux seuls super-utilisateurs lorsqu'ils traitent avec les fichiers d'autres utilisateurs)-D
:Copier les fichiers de l'appareil
Cela fonctionne souvent comme l'utilisateur le souhaite et aucune modification importante n'est nécessaire. Cependant, certains d'entre eux peuvent être contraires aux besoins d'un utilisateur. Par conséquent, le décomposer en fonctionnalités spécifiques peut être la bonne réponse.
D'autres options remarquables incluent :
-n
:Exécutez la commande à blanc sans transférer de fichiers--list-only
:Afficher uniquement la liste des fichiers quirsync
transférerait-P
:Afficher la progression par fichier-v
:Afficher la progression globale, en affichant des informations sur chaque fichier au fur et à mesure qu'il le complète-u
:Ignorer la mise à jour des fichiers cibles s'ils sont plus récents que la source-q
:Mode silencieux. Utile pour l'inclusion dans les scripts lorsque la sortie du terminal n'est pas requise-c
:Utilisez une valeur de somme de contrôle pour déterminer les fichiers à ignorer, plutôt que l'heure et la taille de la modification--existing
:ne mettez à jour que les fichiers, mais n'en créez pas de nouveaux qui manquent--files-from=FILE
:Lire les fichiers source de la liste à partir d'un fichier texte--exclude=PATTERN
:Utilisez PATTERN pour exclure des fichiers de la synchronisation--exclude-from=FILE
:Comme ci-dessus, mais lu à partir d'un fichier--include=PATTERN
:également utilisé pour annuler les règles d'exclusion--include-from=FILE
:Comme ci-dessus, mais lu à partir d'un fichier
Mon ensemble personnel de paramètres par défaut pour rsync
finir par être -avuP
(archiver, sortie détaillée, mettre à jour uniquement les nouveaux fichiers et afficher la progression du travail en cours).
Source et cibles
La source et la cible de la synchronisation sont des fichiers et des répertoires. Aussi, rsync
fournit la fonctionnalité permettant d'interagir avec des systèmes distants via SSH, ce qui évite à l'utilisateur d'avoir à configurer des partages réseau pour pouvoir synchroniser des fichiers d'un endroit à un autre. Cela signifie que vous pouvez facilement scripter rsync
travaux après avoir configuré les clés SSH aux deux extrémités, éliminant ainsi le besoin de se connecter manuellement pour la synchronisation des fichiers à distance.
Exemple :
Décomposer la syntaxe ici :
- Exécuter le
rsync
commande - Avec le
-avuP
paramètres décrits ci-dessus - Pour copier le répertoire Documents local
- En utilisant steve en tant qu'utilisateur sur le système distant
- Où le système distant est appelé fileserver et peut être joint par ce nom
- Et le chemin relatif depuis la maison de Steve est affiché après le : - et dans ce cas, cela signifie mettre ceci dans le répertoire personnel de steve lui-même
Cela copie tout, du dossier Documents de Steve au répertoire Documents sur le système distant, en ne mettant à jour que les fichiers qui ont été modifiés ou qui sont nouveaux. L'exécuter une fois est suffisant (jusqu'à ce qu'il y ait de nouveaux changements). L'exécuter à nouveau immédiatement après devrait produire relativement la même quantité de sortie mais être beaucoup plus rapide car il ignore tous les fichiers.
[ Manuel du propriétaire de l'API :7 bonnes pratiques pour des programmes d'API efficaces ]
Récapitulez
Il existe de nombreuses façons utiles de tirer parti de la puissance de rsync
. C'est souvent aussi simple que de l'exécuter à partir de la ligne de commande de manière ponctuelle pour copier un ensemble de fichiers sans se soucier de perdre du temps à copier des éléments qui existent déjà sur la destination. Scripter ceci, en l'ajoutant à cron
tâches, et l'expérimentation de différents paramètres permet d'atteindre encore plus d'objectifs pour l'administrateur système moyen.