Le but est de créer une sauvegarde automatique des documents de mon serveur principal (bpi) vers mon serveur de dev (torchwood).
Plusieurs points imports :
useradd -m sauvegarde -p blabla -G www-data
Il doit avoir un home pour faciliter la configuration de ssh. On l'ajoute dans le groupe auquel appartient les données à sauvegarder.
laurent@torchwood ~ $ ssh-keygen -t rsa -b 4096 -o -a 64
Generating public/private rsa key pair.
Enter file in which to save the key (/home/laurent/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/laurent/.ssh/id_rsa.
Your public key has been saved in /home/laurent/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:d7ZjV4cOUNJgD9cJgb2WCMhcQ8rfd+h/i9oGb355Imk laurent@torchwood
The key's randomart image is:
+---[RSA 4096]----+
| o ++ ===+ . |
| .+..o.*o o |
| o ....o |
| . ...+. . |
| S o.* o o|
| . * = ..|
| B.o .|
| .EBooo|
| o==o+o|
+----[SHA256]-----+
Que l'on copie sur l'autre le serveur client :
ssh-copy-id sauvegarde@bpi.chez.moi
Normalement, un
ssh sauvegarde@bpi.chez.moi
devrait permettre de se logger sans mot de passe (on corrigera cette faille dans l'étape suivante).
Lancé la commande avec le ssh en mode verbose (ssh -v) :
rsync -avz -e'ssh -v' --stats --exclude=".*" --delete --progress --hard-links --numeric-ids sauvegarde@bpi.chez.moi:/web/trans/ ~/Sauvegardes/Documents/ > /dev/null
et chercher la ligne
debug1: Sending command: rsync --server --sender -vnlHogDtprze.iLsfxCIv --numeric-ids . /web/trans/
On la note, on va s'en servir comme unique commande autorisée.
Ajouter dans ~compte/.ssh/authorized_keys du client, avant la clef, la commande que nous avons noté précédement
restrict,from="<adresse torchwood>",command="rsync --server --sender -vnlHogDtprze.iLsfxCIv --numeric-ids . /web/trans/"
Il n'y a qu'à relancer la commande précédente :
rsync -avz --exclude=".*" --stats --delete --progress --hard-links --numeric-ids sauvegarde@bpi.chez.moi:/web/trans/ ~/Sauvegardes/Documents/
Maintenant que les sauvegardes fonctionnent, il faut les lancer régulièrement : c'est le rôle du bien connu cron. Et en plus, on va être notifié lorsqu'une sauvegarde échoue.
Launch est un script shell que j'ai créé il y a bien longtemps et qui permet de logger le résultat d'une commande. J'ai juste modifié le script pour que les logs soient mis dans /tmp/logs plutot que /var/log.
Je garde sous silence l'installation du démon cron et de la configuration pour que l'utilisateur qui effectuera les sauvegardes puisse l'utiliser : c'est classique et dépend de la distribution.
Les sauvegardes se feront en fin de journée, tous les jours a 2h du matin. On doit donc créer la crontab suivante :
00 02 * * * /usr/local/bin/launch rsync -avz --exclude=".*" --stats --delete --progress --hard-links --numeric-ids sauvegarde@bpi.chez.moi:/web/trans/ ~/Sauvegardes/Documents/
00 04 * * * find /tmp/logs/batches/ -type f -mtime +15 -exec rm {} ;
La seconde ligne va purger les logs après 15j.
Visitez : Nos sorties Ski et rando |
Copyright Laurent Faillie
2001-2025
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso. |
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution. |
Visites durant les 7 derniers jours
|
Vous pouvez
laissez un commentaire
sur cette page.