Le Principe de base
La synchronisation de données permet de nombreuses choses et dans de nombreux cas différents :
- Backup : Sauvegarder des données vers un autre hôte, un serveur de stockage ou une baie de stockage (via un hôte SSH/SFTP) - Il s'agit de la méthode la plus courante.
- Synchro : Synchroniser des données entre deux hôtes pour assurer le reflet des données. Utilisé dans les cas spécifiques de données d'usage courant.
- Archivage : Nettoyage de données avec transfert vers un hôte d'Archivage via SSH/SFTP. Utilisé pour libérer de l'espace sans perte de données réel.
Différences entre Rsync, SCP et SFTP
Il est important de différencier l'usage de chacune des commandes et d'identifier dans quelle situations elles sont utiles.
scp
: Utile surtout pour un transfert One Time (une fois) d'un gros volume de données.sftp
: même usage que SCP, mais SCP est encore très utilisé.rsync
: Associé a SFTP via SSH, Rsync permet de synchroniser, de backuper ou d'archiver des données et permet donc aussi le transfert de gros volumes de données avec une vérification d'existence des données sur la destination (diff).
Ainsi, l'usage dersync
est le plus conseillé pour sauvegarder, synchroniser ou copier des données sans perte. Il est même recommandé dans le cas de programmation par des programmes tel quecron
ou des solutions d'Entreprise comme VTOM Bot ou Ansible Automation.
Rsync : Usages
Il est vivement conseillé d'utiliser des clés privées pour vos configuration Rsync. Cela permet de fluidifier le fonctionnement mais aussi de le sécuriser.
Exemple de commande Local vers Remote (Exfiltration)
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress [local-dir] [remote-user]@[remote-host]:/[remote-dir]
Exemple de commande Remote vers Local (Aspiration)
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress [remote-user]@[remote-host]:/[remote-dir] [local-dir]
Un hôte peut tout a fait faire un backup des données d'un autre hôte vers lui-même (mode d'Aspiration) ce qui rend le processus semi-indépendant de l'hôte source.
Un hôte peut également envoyer des données vers un autre hôte (mode d'Exfiltration) mais est dépendant de l'hôte source.
Explications
-avz
: Mode Compression + Archive (tar) + Suppression par Différenciation.-e
: Mode Tunneling (SSH/RSH).ssh -o [SHKC/UKHF]
: Bypass Host Verification et Bypass User Key Verification (Non conseillé, il est préférable d'utiliser des clés d'hôte approuvées, hormis en environnement fermé).--progress
: Affiche le suivi. Inutile lorsqu'utilisé en tant que CronJob.
Informations Additionnelles
Il est a noter que Rsync vérifie l'existence de données coté source et coté destination. Par défaut et sans paramêtres, Rsync ne va pas supprimer des données coté destination lorsque la source n'a plus cette données (mode Synchro) qui est le comportement par défaut. Un paramêtre existe pour activer la suppression (-a
).
Pour un Backup en one shot (accompagné de snap shots) alors ce mode convient pas forcement car cela pourrait déformer l'intégrité du backup.