[Article] [beta]Sauvegarder un dédié part II

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

[Article] [beta]Sauvegarder un dédié part II

Message le Ven Juin 13, 2008 14:28

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 ^^

Wikipédia a écrit: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: Tout sélectionner
#!/bin/bash
echo Script de sauvegarde ...
#
# Sauvegarde via rsync
# Fontenay Ronan

###### 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: Tout sélectionner
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: Tout sélectionner
ssh-copy-id -i ~/.ssh/id_dsa.pub user@ip.du.serveur


On se place dans le repertoire /home/root

Code: Tout sélectionner
cd /root/


On va creer le script

Code: Tout sélectionner
vim backup.sh


Une fois dans vim on copie le texte
On tappe

Code: Tout sélectionner
:set paste


Puis i pour insertion

Code: Tout sélectionner
i


En on peut coller le texte (en ayant tout bien rempli ;))

Code: Tout sélectionner
Ctrl + v


On enregistre et on quitte :

Code: Tout sélectionner
:wq


On rend éxécutable le script

Code: Tout sélectionner
chmod +x sauvegarde.sh


Pour plus de sécurité :

Code: Tout sélectionner
chmod 640 sauvegarde.sh


Vous pouvez exécuter le fichier avec la commande

Code: Tout sélectionner
./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: Tout sélectionner
vim /etc/crontab


Et ajouter cette ligne

Code: Tout sélectionner
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]
Dernière édition par Ron56 le Ven Juin 13, 2008 15:59, édité 4 fois.


dmathieu
Modérateur
Modérateur
 
Messages: 6930
Inscription: Ven Jan 09, 2004 16:21

Message le Ven Juin 13, 2008 15:19

En quoi le transfert via rsync est-il mieux qu'un transfert par ftp ?

nb : le lien vers mon profil ne fonctionne pas :mrgreen:


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Ven Juin 13, 2008 15:23

kazhar a écrit:En quoi le transfert via rsync est-il mieux qu'un transfert par ftp ?

nb : le lien vers mon profil ne fonctionne pas :mrgreen:


Corrigé pour les liens

Effectivement je n'ai pas dit pourquoi c'était plus intéressant via rsync

En fait rsync va juste transférer sur le serveur de backup les fichiers/dossiers qui ont été ajoutés/modifiés et il va aussi supprimé du serveur de backup les fichier qui ont été supprimés du serveur client depuis la dernière sauvegarde...

Ensuite c'est quand même bien sécurisé car via ssh ...


dmathieu
Modérateur
Modérateur
 
Messages: 6930
Inscription: Ven Jan 09, 2004 16:21

Message le Ven Juin 13, 2008 15:26

Ok :-)
Seconde question. Tu dit ici donc que cela va supprimer les anciens fichiers. Super.

Seulement si je veux faire de l'incrémental un peu poussé :
- Conserver les deux dernières sauvegardes
- Conserver la dernière sauvegarde des dimanches sur les 4 dernières semaines

C'est pas possible ou on peut trifouiller ? :p

P.S. : oui je suis parano et chiant :)


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Ven Juin 13, 2008 15:45

Conserver les deux dernières sauvegardes

c'est tout a fait fesable en utilisant le même principe que le backup ftp

Par exemple on pourrait remplacer ( a tester :))
Code: Tout sélectionner
repbkp=""


Par

Code: Tout sélectionner
#repertoire ou seront stockées les sauvegardes
#ex : $repTravail="/home/ron/home/toto/backup-serveur/"
$repTravail=""
dateActuelle=$(date +%d%m%Y)
datePassee=$(date --date '2 days ago' +%d%m%Y)
repbkp=$repTravail$dateActuelle

echo - Suppression du repertoire $repTravail$datePassee
rm -rf $repTravail$datePassee


Ainsi dans home/ron/home/toto/backup-serveur/ j'aurai des dossiers avec les dates et dans ces dossiers j'aurai les sauvegardes ...

Conserver la dernière sauvegarde des dimanches sur les 4 dernières semaines

Deux méthodes possibles :

Première méthode (celle que j'adopterai) :
Dans le script exécuté tout les jours tu détecte si on est dimanche , si oui tu exécute un autre script qui est le même que celui que je présente ici a deux différences près :
-il sauvegardera dans un autre repertoire sur le serveur de backup
-il supprimera le backup vieux de un mois uniquement :)

Seconde méthode :

Un script sur ton serveur de backup exécuté uniquement le dimanche 2h après le backup et qui copie la sauvegarde dans un autre répertoire et supprimera le backup vieux de un mois
A mon avis moins bien car si tu a un problème de synchro entre les deux serveurs :s


dmathieu
Modérateur
Modérateur
 
Messages: 6930
Inscription: Ven Jan 09, 2004 16:21

Message le Ven Juin 13, 2008 15:48

Il est évident que la première méthode est mieux ;)
Je me pencherai là-dessus dimanche. Et je viendrai valider ton article si personne ne l'a encore fait et que ça fonctionne.

En attendant
Image


Ron56
WRInaute passionné
WRInaute passionné
 
Messages: 706
Inscription: Dim Nov 20, 2005 20:05

Message le Ven Juin 13, 2008 15:52

J'ai testé mais comme je l'ai fait au fur et a mesure j'ai peut etre zapper des trucs :)

Si vous avez des améliorations a proposer :)


elcantar
WRInaute discret
WRInaute discret
 
Messages: 84
Inscription: Mar Mai 17, 2005 9:32

Message le Ven Juin 13, 2008 15:52

Merci pour cet article !

Je vais tester tout ça, mais déjà : +1 reco pour l'initiative !

Bonne fin de journée

rikew
WRInaute passionné
WRInaute passionné
 
Messages: 551
Inscription: Jeu Déc 19, 2002 19:53

Message le Ven Juin 13, 2008 15:59

On peut faire du rsync entre un serveur linux et un ordinateur sous windows via cwRsync.


bruno212
WRInaute impliqué
WRInaute impliqué
 
Messages: 363
Inscription: Dim Fév 13, 2005 23:32

BackupPC

Message le Ven Juin 13, 2008 19:22

Bonsoir,

dans le même ordre d'idée, vous pouvez aussi utiliser BackupPC (http://backuppc.sourceforge.net/).

Il s'agit d'une collection de script perl qui permet de faire des copies de sauvegarde via tar, rsync et ssh.

Un fichier de configuration permet de personnaliser les copies de sauvegarde, la fréquences, le nombre de copie incrémentielle à conserver, etc.

Ce système possède une interface web pour gérer les sauvegardes. Il s'installe facilement sur un système Debian/Ubuntu.

C'est ce que j'utilise pour backupper mes serveurs dédiés et virtuel dédié.

Bruno


david96
WRInaute accro
WRInaute accro
 
Messages: 1411
Inscription: Dim Aoû 28, 2005 21:56

Message le Dim Juin 15, 2008 1:58

kazhar a écrit:Seulement si je veux faire de l'incrémental un peu poussé :
- Conserver les deux dernières sauvegardes
- Conserver la dernière sauvegarde des dimanches sur les 4 dernières semaines

C'est pas possible ou on peut trifouiller ? :p

P.S. : oui je suis parano et chiant :)

http://www.webrankinfo.com/forums/topic ... 864_16.htm
En espérant que ça réponde à ta question :wink:


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: Lun Oct 14, 2002 10:00

Message le Lun Juin 16, 2008 7:09

Euh, hum, vu que c'est le bazar sur mon dédié, vais me contenter des 5€ que sivit me réclame tous les mois pour faire le job de backup :-)

Mais merci pour l'article, ça peut toujours servir !


efz
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 180
Inscription: Mer Nov 16, 2005 10:06

Message le Lun Juin 16, 2008 8:39

mahefarivony a écrit:Euh, hum, vu que c'est le bazar sur mon dédié, vais me contenter des 5€ que sivit me réclame tous les mois pour faire le job de backup :-)

Mais merci pour l'article, ça peut toujours servir !


C'est du rsync chez Sivit ;)


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: Lun Oct 14, 2002 10:00

Message le Lun Juin 16, 2008 8:45

exact :-)


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: Lun Oct 14, 2002 10:00

Message le Lun Juin 16, 2008 8:48

et d'ailleurs au passage, pour en revenir à l'article, il y a pas un démon rsyncd à lancer sur le serveur client ? Chez moi le backup sivit gueule quand ce démon n'est pas lancé

[Article] [beta]Sauvegarder un dédié part II

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités