Académique Documents
Professionnel Documents
Culture Documents
Il fait l’inventaire des fichiers dans les deux répertoires et ne recopie que les
fichiers soit qui n’existent pas dans le répertoire cible, soit qui ont été modifiés
depuis la dernière copie. Comme scp, rsync utilise un tunnel ssh lorsque l’un des
deux répertoires (ou les deux) à synchroniser est distant.
Nous allons voir les bases de rsync et la façon dont on peut s’en servir pour faire
des sauvegardes, nous allons voir ensuite comment il est possible d’automatiser
cette tâche et de régler le problème du mot de passe (documentation)
Commande et options
repertoirecible est sur la machine le chemin vers le répertoire dans lequel vous
souhaitez stocker les fichiers sauvegardés
–progress sert à afficher une jauge à chaque fois qu’un fichier est transféré
A chaque fois que cette commande sera invoquée, le répertoire distant sera
synchronisé avec le répertoire source. Comme seuls les fichiers nouveaux ou
modifiés sont transférés, la synchronisation est très rapide. Vous noterez que
contrairement à ce que le mot synchronisation laisse entendre, la sauvegarde ne se
fait que depuis la source vers la cible. Si vous modifiez des fichiers dans le
répertoire cible, ils ne seront jamais recopiés dans le répertoire source par rsync.
Le mot de passe
Avant de lire la suite, vous devez accepter l’idée qu’il est impossible de passer le
mot de passe en argument à rsync, il vous enverra promener systématiquement et je
vous avoue qu’au niveau sécurité ça laisserait franchement à désirer.
Pour commencer vous devez créer un couple de clés RSA, l’une des clés est la clé
publique et l’autre la clé privée. La clé privée va vous servir à signer
électroniquement un document, et la clé publique servira à vérifier que la signature
est correcte. Vous devez donc mettre sur le serveur distant votre clé publique et
conserver sur votre disque dur votre clé privée. A chaque tentative de connexion, le
serveur va vous envoyer une donnée qui sera automatiquement signée à l’aide de
votre clé privée, puis retournée au serveur. Le serveur va ensuite utiliser votre clé
publique pour s’assurer que la signature est correcte. Si c’est le cas, la demande de
connexion sera acceptée, sinon elle sera refusée.
Cela signifie que vous n’aurez plus jamais besoin de saisir de votre mot de passe
lorsque, depuis une machine disposant de votre clé publique, vous vous
connecterez en ssh (ou avec une commande utilisant ssh, par exemple scp et rsync).
ssh-keygen -t rsa
Vous pouvez conserver toutes les options par défaut. Une fois l’exécution de cette
commande terminée, deux fichiers id_rsa et id_rsa.pub sont crées dans le repértoire
$HOME/.ssh/. id_rsa.pub est votre clé publique et id_rsa est votre clé privée.
Il suffit d’utiliser la commande scp pour envoyer id_rsa.pub sur le serveur ssh. On
procède de la façon suivante :
scp $HOME/.ssh/id_rsa.pub login@hote:.ssh/authorized_keys
login est votre login sur la machine distante, et hote est le hostname de la machine
distante. Et pour la dernière fois, vous devrez saisir votre mot de passe !Il ne faudra
pas oublier de gérer les droits du fichier $HOME/.ssh/authorized_keys en le
mettant en 700 :
Les commandes RSYNC utilisées dans notre cas sont les suivantes :
Les options a et v signifient archive et verbose. L’option archive permet de conserver tous les
attributs du fichier lors de la copie (ses droits, son propriétaire, son groupe, si c’est un lien
symbolique, etc…). L’option verbose couplée à l’option –log-file permet à rsync de nous parler et
d’inscrire ce qu’il fait dans un fichier journal. Tout ce que fait rsync sera inscrit
dans /Backup/rsync_log.log dans notre cas.
Introduction
rsync est un logiciel (libre) qui permet la synchronisation de fichiers (de
manière unidirectionnelle) ; il est très souvent utilisé pour la réalisation de
sauvegardes.
Nom IP
srv-1 192.168.0.10
srv-filer 192.168.0.20
Le but va être de sauvegardé les données de « srv-1 » vers « srv-filer » ; les
commandes rsync s’effectueront depuis le serveur srv-filer.
La syntaxe de rsync reste relativement simple, et se présente comme suit :
SSH
Par défaut, rsync utilise SSH. Ce qui veut dire que pour chaque commande
rsync, un mot de passe vous sera demandé. Puisque les sauvegardes sont
habituellement automatisées, ce n’est pas l’idéal.
Il faut donc en amont générer une paire de clés pour SSH puis faire la
propagation sur le serveur distant afin de pouvoir s’authentifier sans mot de
passe (authorized_keys).
1 root@srv-filer:/# ssh-keygen
Puis on lance la copie sur le serveur distant (ici srv-1) :
1 root@srv-filer:/# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.10
On peut désormais se connecter en SSH depuis srv-filer vers srv-1 sans mot
de passe.
Sauvegarde complète
Si on souhaite faire une sauvegarde complète de srv-1 vers le répertoire «
/backups/srv-1/ » sur srv-filer :
1 root@srv-filer:/# ls /backups/srv-1/
2 bin boot datas dev etc home initrd.img lib lib64 lost+found media mnt opt proc root run sbin srv
3 sys tmp usr var vmlinuz
4 root@srv-filer:/#
5 root@srv-filer:/# du -hs /backups/srv-1
4,9G /backups/srv-1
Sauvegarde incrémentielle
Dans cette partie, je vais entrer plus profondément dans les détails afin
d’avoir la meilleure compréhension possible. Je vais notamment minimiser
et cibler mes sauvegardes sur un répertoire de test qui sera « /datas »et
effectuer différentes manipulations.
Préparation
On commence sur srv-1 par créer 10 fichiers texte dans le
répertoire /datas pour nos tests :
1 root@srv-filer:/# ls /backups/srv-1/
2 test10.txt test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt
1 root@srv-filer:/# vi /etc/profile :
2 ...
3 date=$(date +%d-%m-%Y)
Depuis le terminal, si on fait un echo de la variable, ce dernier nous renvoie
donc la date au format adapté :
Commande rsync
On va maintenant ajouter/modifier/supprimer certains fichiers dans le
répertoire /datas sur srv-1 :
1 root@srv-filer:/# ls /backups/srv-1/
2 00.txt 0.txt test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt
On retrouve bien les 2 fichiers créés (0.txt et 00.txt), et le fichier supprimé
(test10.txt) n’est plus présent.
Si on regarde dans le répertoire /backups, un dossier old-srv1 a été créé :
1 root@srv-filer:/# ls /backups/
2 old-srv-1 srv-1
Dedans, un répertoire avec la date du jour a aussi été créé (grâce à notre
variable $date) :
1 root@srv-filer:/# ls /backups/old-srv-1/
2 17-03-2018
Pour ce qui est de son contenu :
1 root@srv-filer:/# ls /backups/old-srv-1/17-03-2018/
2 test10.txt test5.txt test6.txt
Comme attendu, les fichiers modifiés (test5.txt et test6.txt) et le fichier
supprimé (test10.txt) ont été sauvegardés dans ce répertoire.
Vérification du contenu des fichiers modifiés pour en être sur :
1 root@srv-filer:/# ls /backups/old-srv-1/
2 17-03-2018 18-03-2018
Et ce dernier comprend bien la sauvegarde des fichiers modifiés :
1 root@srv-filer:/# ls /backups/old-srv-1/18-03-2018/
2 test1.txt test2.txt test3.txt
root@srv-1:/# vi /etc/crontab
1
# m h dom mon dow command
2
00 5 * * 7 root rsync -auvHP --numeric-ids --delete --backup --backup-dir=/backups/old-srv-
3
1/$DATE/ root@192.168.0.10:/datas/ /backups/srv-1/
Archivage
Pour aller plus loin, si on veut gagner de la place, on peut procéder à un
archivage.
ssh admin@IP_NAS
Entrez votre mot de passe, vous devriez être loggué. Si ce n'est pas
le cas, vérifiez la configuration routeur/firewall du port 22.
/sbin/nologin
par
/bin/sh
Sauvegardez le fichier.
/bin/sh
ssh-keygen -t rsa
et on y ajoute :
A lire : Serveur dédié : intégrer SSH à WordPress pour mettre à jour le core, les
plugins et les thèmes
Ensuite, on crée le fichier snapshot.sh:
nano /volume1/backup/snapshot.sh
et on y ajoute: