Rsync (pour remote synchronization ou synchronisation à distance), est un logiciel de synchronisation de fichiers très polyvalent. Il peut copier localement, depuis/vers un autre hôte via un shell distant, ou vers/depuis un démon rsync
distant. Rsync est largement utilisé pour les sauvegardes et la mise en miroir, il détecte les fichiers devant être transférés en se basant sur leur taille ou l’heure de modification.
Utilisation
Comme l’indique le manuel :
rsync est un programme très similaire à rcp, mais possède bien plus d’options et utilise le protocole de mise à jour à distance rsync afin d’accélérer significativement le transfert de fichiers lorsque le fichier de destination existe déjà.
Accès local
Simplement, sur une même machine il suffit de copier la source vers la destination :
# rsync [OPTION...] SRC... [DEST] |
Exemple :
# rsync source/ destinationBackup/ |
Accès distant
Utilisation à travers le réseau, rsync
utilise SSH par défaut :
# rsync [OPTION...] [USER@]HOST:SRC... [DEST] |
Exemple :
# rsync -az source/ [email protected]:/destination/ |
Faire un backup du serveur VERS une machine distante :
# rsync -r -e ssh /home [email protected]:SAVES.`date +'%Y'`/HOME.`date +'%V'` |
Rajouter -v
pour la verbose et voir en temps réel les fichiers copiés.
Répertoire et slash /
Attention avec l’utilisation ou non du slash /
dans le chemin de la source.
Les deux commandes suivantes sont différentes :
1/ Cette première commande va créer le dossier source dans le dossier destination en ajoutant donc un niveau dans l’arborescence :
# rsync source destination/ |
2/ Cette deuxième commande copie le contenu du dossier source dans le dossier destination.
# rsync source/ destination/ |
3/ Ces deux commandes sont cependant équivalentes :
# rsync source destination/ |
Enfin, il faut noter que l’utilisation ou non d’un slash final dans le chemin de destination n’a aucune incidence. Les deux commandes suivantes sont donc équivalentes :
Sauf dans le cas ou source est un lien symbolique vers un répertoire, la première commande ne copie alors que le lien tandis que la seconde travaille bien à l’intérieur du répertoire.
# rsync source destination/ |
Aide rsync
Extrait de l’aide, pour plus d’info faire man rsync
ou rsync --help
:
### Extrait de l'aide rsync : ### |
Utilisation en tant que service
@TODO
Automatisation des sauvergades
Mise en place d’un script
Sur le serveur on crée un script ‘General.sh’ qui sera lancé par cron
et qui fera des backups complets 1 fois par semaine et incrémentiels tous les jours.
Pour facilement obtenir ce résultat il suffit d’utiliser une des variables de la commande date
qui permet de récupérer le numéro de la semaine de l’année. Au choix on peut utiliser %V
, %U
ou %W
, l’aide de date nous indique les différences :
%U # le numéro de la semaine de l'année, avec le dimanche comme premier jour de la semaine (00..53) |
Ainsi à chaque nouvelle semaine sera fait une sauvegarde complète (puisqu’il y aura création d’un nouveau dossier) et les 6 autres jours une sauvegarde incrémentielle (puisque le dossier cible est le même et les fichiers seront écrasés).
Le script contiendra :
#!/bin/bash |
La cible sera par exemple ici SAVE.2020/Semaine.07/
et durant les 6 jours suivant des incrémentales seront sauvegardées dans ce dossier. La semaine suivante (à partir du Lundi donc) un nouveau dossier sera crée SAVE.2020/Semaine.08
avec une sauvegarde complète puis les incrémentielles les autres jours et ainsi de suite.
Le dossier SAVE.2020/
devra déjà exister sur la machine qui recevra le backup. Il est également possible de créer un cron qui créera chaque année le nouveau dossier.
Contenu de la crontab
Sur le serveur qui enverra les backups
Pour changer l’éditeur par défaut de cron il faut modifier la variable #EDITOR
:
# export EDITOR=vim |
Ainsi la crontab s’ouvrira avec Vi :
# crontab -e |
# m h dom mon dow command |
Ici le premier script se lancera tout les jours * * * à 12h30 et le second à 12h40.
L’option -l
permettra de juste voir le contenu de la crontab :
Sur la machine qui recevra les backups
Pour créer un dossier ayant pour nom l’année en cours tous les nouvels ans :
# m h dom mon dow command |
Supprimer et restaurer
Les logs doivent être conserver pendant 1 an, pour supprimer les logs de + de 1 an :
@TODO
- option
--delete
? plutot oui
Documentation
https://doc.ubuntu-fr.org/rsync
https://wiki.debian-fr.xyz/Rsync
https://rsync.samba.org/