Bonjour a tous,
Je vous avais déja parlé d'une méthode pour sauvegarder son serveur ici
Je vais vous parler d'une autre méthode, en utilisant le logiciel RSYNC
Attention, si vous êtes débutant attendez que quelqu'un qui maitrise est bien validé cet article ^^
Je vais prendre ici un exemple d'un serveur linux ou unix vers un autre serveur linux ou unix (GNU linux, freebsd, openbsd..) ...
Personnellement mon pc de bureau tourne sous linux et mon serveur aussi, donc je backup directement sur mon pc de bureau, mais on peut très bien imaginer un deuxième serveur en datacenter ou un serveur a la maison comme kazhar l'as fait.
Personnellement je backup /home, /etc, /root et /var, a vous de choisir
J'ai pris l'habitude de faire un backup des tables mysql avant histoire d'avoir quelque chose de plus simple en cas de crash...
Pour ce script c'est vraiment quelque chose de "basique" mais quand même sécurisé car passant par une connexion SSH ...
Pour la rédaction on dira que le serveur a sauvegarder est le 'serveur client' et le serveur sur lequel seront stockés les backup est le 'serveur de backup'
Le script :
Le script a besoin d'un accès SSH sur le serveur de backup pour pouvoir y copier les fichiers, le script sera executer via "cron" en root pour être sur de tout copier
Sur le serveur client
Les commandes doivent être exécutées en root
Sur le serveur client on va générer une paire de clé pour pouvoir avoir un accès SSH sans avoir a taper de mot de passe ...
Ne rien mettre en passphrase
Puis on copie la clé publique sur le serveur de backup (penser a remplacer "user" et "ip.du.serveur" par les bonnes valeurs :
On se place dans le repertoire /home/root
On va creer le script
Une fois dans vim on copie le texte
On tappe
Puis i pour insertion
En on peut coller le texte (en ayant tout bien rempli )
On enregistre et on quitte :
On rend éxécutable le script
Pour plus de sécurité :
Vous pouvez exécuter le fichier avec la commande
Ca marche ? bon ben on continue maintenant , on va exécuter le script tout les jours avec cron
Attention, si un fichier a été supprimé du disque dur sur serveur client il sera supprimé du disque du serveur de backup a la prochaine sauvegarde (grâce a l'option --delete)
Et ajouter cette ligne
Le script s'exécutera tout les matins a 4h30
Pour ceux qui veulent comprendre comment ca marche : http://fr.wikipedia.org/wiki/Crontab
N'hésitez pas a poser des question ou des remarques
Ron[/code]
Je vous avais déja parlé d'une méthode pour sauvegarder son serveur ici
Je vais vous parler d'une autre méthode, en utilisant le logiciel RSYNC
Attention, si vous êtes débutant attendez que quelqu'un qui maitrise est bien validé cet article ^^
Wikipédia a dit:rsync (remote synchronization, synchronisation distante) est un logiciel de synchronisation de fichiers, distribué sous licence GPL. La synchronisation est unidirectionnelle, c'est-à-dire qu'elle copie les fichiers de la source en direction de la destination. rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour diffuser le contenu d'un répertoire de référence.
rsync fonctionne sur un large spectre de systèmes d'exploitation (Microsoft Windows, Linux, Mac OS X), permettant ainsi de synchroniser des fichiers de différents systèmes d'exploitation.
Je vais prendre ici un exemple d'un serveur linux ou unix vers un autre serveur linux ou unix (GNU linux, freebsd, openbsd..) ...
Personnellement mon pc de bureau tourne sous linux et mon serveur aussi, donc je backup directement sur mon pc de bureau, mais on peut très bien imaginer un deuxième serveur en datacenter ou un serveur a la maison comme kazhar l'as fait.
Personnellement je backup /home, /etc, /root et /var, a vous de choisir
J'ai pris l'habitude de faire un backup des tables mysql avant histoire d'avoir quelque chose de plus simple en cas de crash...
Pour ce script c'est vraiment quelque chose de "basique" mais quand même sécurisé car passant par une connexion SSH ...
Pour la rédaction on dira que le serveur a sauvegarder est le 'serveur client' et le serveur sur lequel seront stockés les backup est le 'serveur de backup'
Le script :
Code:
#!/bin/bash
echo Script de sauvegarde ...
#
# Sauvegarde via rsync
###### Debut Initialisation ######
### DEBUT des Parametres concernant le backup de mysql ###
#user mysql :
strMysqlUser=""
#mot de passe mysql de l'user:
strPassword=""
#dossier sur le serveur client ou l'ont stocke les sauvegarde des bases de donn�es avant de tout transferer sur le serveur de backup
#ex : /home/root/mysql/
#/!\ Penser a mettre un slash de chaque cot
bkpmysql=""
### FIN des Parametres concernant le backup de mysql ###
### DEBUT des Parametres concernant le transfert via rsync ###
# IP ou Domaine du serveur de backup
# exemple adresse = "****.dyndns.org"
adresse=""
# utilisateur pour la connexion SSH sur le serveur de backup
#ex user="toto"
user=""
#Dossier sur le serveur de backup dans lequel on va copier les sauvegardes
#ex: repbkp="/home/toto/backup-serveur/"
#/!\ Penser a mettre un slash de chaque cot
repbkp=""
### FIN des Parametres concernant le transfert via rsync ###
echo - Backup MYSQL
echo -----------------------------------------------------
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" | tail -n +2)
#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
echo Debut du dump de la base $lineDatabase vers $bkpmysql
mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$bkpmysql""$lineDatabase".sql.gz
echo Dump compressé dans $bkpmysql$lineDatabase.sql.gz
echo -----------------------------------------------------
done
echo - Transfert via Rsync
rsync -arz --stats --progress --delete --force --ignore-errors /home $user@$adresse:$repbkp
rsync -arz --stats --progress --delete --force --ignore-errors /var $user@$adresse:$repbkp
rsync -arz --stats --progress --delete --force --ignore-errors /etc $user@$adresse:$repbkp
rsync -arz --stats --progress --delete --force --ignore-errors /root $user@$adresse:$repbkp
echo Fin de la sauvegarde
exit 0
Le script a besoin d'un accès SSH sur le serveur de backup pour pouvoir y copier les fichiers, le script sera executer via "cron" en root pour être sur de tout copier
Sur le serveur client
Les commandes doivent être exécutées en root
Sur le serveur client on va générer une paire de clé pour pouvoir avoir un accès SSH sans avoir a taper de mot de passe ...
Code:
ssh-keygen -t dsa -b 1024
Ne rien mettre en passphrase
Puis on copie la clé publique sur le serveur de backup (penser a remplacer "user" et "ip.du.serveur" par les bonnes valeurs :
Code:
ssh-copy-id -i ~/.ssh/id_dsa.pub user@ip.du.serveur
On se place dans le repertoire /home/root
Code:
cd /root/
On va creer le script
Code:
vim backup.sh
Une fois dans vim on copie le texte
On tappe
Code:
:set paste
Puis i pour insertion
Code:
i
En on peut coller le texte (en ayant tout bien rempli )
Code:
Ctrl + v
On enregistre et on quitte :
Code:
:wq
On rend éxécutable le script
Code:
chmod +x sauvegarde.sh
Pour plus de sécurité :
Code:
chmod 640 sauvegarde.sh
Vous pouvez exécuter le fichier avec la commande
Code:
./sauvegarde.sh
Ca marche ? bon ben on continue maintenant , on va exécuter le script tout les jours avec cron
Attention, si un fichier a été supprimé du disque dur sur serveur client il sera supprimé du disque du serveur de backup a la prochaine sauvegarde (grâce a l'option --delete)
Code:
vim /etc/crontab
Et ajouter cette ligne
Code:
30 04 * * * root cd /root && ./sauvegarde
Le script s'exécutera tout les matins a 4h30
Pour ceux qui veulent comprendre comment ca marche : http://fr.wikipedia.org/wiki/Crontab
N'hésitez pas a poser des question ou des remarques
Ron[/code]