Det er litt forslitt til den åpenbare lengden målet Internett backup, er det helt greit. Utover det fysiske farer victimes av serveradministratoren (brann, oversvømmelse, hærverk, Martians ...), er det alltid godt for hjertet å ha sikkerhetskopier i boks av feil håndtering ...

Jeg smelte, foooonds jeg!
I denne artikkelen vil vi se tilbake på en enkel og store filer til en SQL database server til en Ubuntu (eller mer generelt Enhver Linux-server).
Filer
For å lagre filene Vi vil bruke Duplicity verktøy som vil ikke har håndtere bare backup soi målet australier håndtere kryptering og inkrementell backup. australier Vær CDN filer lastet opp på en annen server med FTP, SCP, SSH, Amazon S3, etc. ..
Duplicity å installere Ubuntu server der, skriv inn følgende kommando:
$sudo apt-get install duplicity
Une fois l’installation terminée il faut créer un script contenant l’ensemble des commandes à effectuer. Par exemple vous pourriez indiquer les commandes suivantes :
export PASSPHRASE=MOT_DE_PASSE
duplicity –full-if-older-than 1M /etc file:///home/nom_utilisateur/backups/duplicity/etc
duplicity –full-if-older-than 1M /var/lib/mediawiki file:///home/nom_utilisateur/backups/duplicity/var/lib/mediawiki
duplicity –full-if-older-than 1M /var/www file:///home/nom_utilisateur/backups/duplicity/var/www
duplicity –full-if-older-than 1M –exclude /home/nom_utilisateur/backups /home file:///home/nom_utilisateur/backups/duplicity/home
duplicity remove-all-but-n-full 3 file:///home/nom_utilisateur/backups/duplicity/etc
duplicity remove-all-but-n-full 3 file:///home/nom_utilisateur/backups/duplicity/var/lib/mediawiki
duplicity remove-all-but-n-full 3 file:///home/nom_utilisateur/backups/duplicity/var/www
duplicity remove-all-but-n-full 3 file:///home/nom_utilisateur/backups/duplicity/home
unset PASSPHRASE
La première ligne défini le mot de passe qui vous sera demandé lorsque vous souhaiterez accéder au fichier de backup.
La ligne suivante demande de lancer un backup du répertoire /etc et de le stocker dans le répertoire / home/nom_utilisateur/backups/duplicity/etc . Notez bien le triple / après file: qui indique qu’il s’agit d’un répertoire ou d’un fichier local et non pas d’un serveur FTP, SSH ou autre. L’option –full-if-older-than 1M indique à Duplicity qu’il devra faire un backup incrémental sauf si le dernier backup complet date de plus d’un mois, auquel cas il relancera un backup complet.
Si vous souhaitez sauvegarder vos données directement sur un serveur distant vous pouvez ajouter une ligne export FTP_PASSWORD = MOT_DE_PASSE_FTP et remplacer l’expression file:/// par ftp://utilisateur_ftp@IP_serveur_distant/répertoire_backup . Ajoutez également à la fin une ligne unset FTP_PASSWORD .
Les deux lignes suivantes exécutent un backup des fichiers de MediaWiki installé dans /var/lib/mediawiki et un backup du répertoire /var/www .
La dernière ligne effectue un backup du répertoire /home en excluant le répertoire / home/nom_utilisateur/backups .
Les quatre commandes suivantes suppriment les backups de plus de trois mois.
La dernière ligne vide la variable PASSPHRASE avant que le script ne s’achève.
Vérifiez bien que votre script, par exemple duplicity.sh dans votre répertoire /home/nom_utilisateur , a bien les droits d’exécution ou donnez-les lui :
$sudo chmod 700 duplicity.sh
Il ne reste plus qu’à programmer l’exécution de ce script à la fréquence que vous préférez. Dans mon cas le backup se fera tous les jours à 22h30 :
$sudo crontab -e
J’ai ajouté au cron la ligne suivante :
30 22 * * * /home/nom_utilisateur/duplicity.sh
Duplicity crée une série de fichiers GPG cryptés par votre PASSPHRASE . Les fichiers de backups proprement dits sont de la forme :
duplicity-full.20100712T223000Z.vol1.difftar.gpg
duplicity-inc.20100712T223000Z.to.20100713T223000Z.vol1.difftar.gpg
duplicity-inc.20100713T223000Z.to.20100714T223000Z.vol1.difftar.gpg
…
On reconnaît le backup complet (full) et les backups incrémentaux qui suivent (inc) ainsi que les dates associées.
Pour afficher la liste des fichiers sauvegardés vous pouvez créer un script list.sh contenant les lignes suivantes :
export PASSPHRASE=MOT_DE_PASSE
duplicity list-current-files file:///home_nom_utilisateur/backups/duplicity/var/lib/mediawiki
unset PASSPHRASE
Ce fichier listera les fichiers dans la sauvegarde de /var/lib/mediawiki exécutée précédemment.
Pour restaurer l’ensemble de /var/lib/mediawiki dans un répertoire temporaire /home/nom_utilisateur/restore , vous pouvez lancer la commande suivante :
$sudo duplicity file:///home_nom_utilisateur/backups/duplicity/var/lib/mediawiki /home/nom_utilisateur/restore
et taper le mot de passe du fichier de sauvegarde.
Pour restaurer un fichier en particulier, par exemple le fichier /var/lib/mediawiki/extensions/geshi.php :
$sudo duplicity --file-to-restore extensions/geshi.php file:///home/nom_utilisateur/backups/duplicity/var/lib/mediawiki/ /home_nom_utilisateur/restore/geshi.php
De la même manière vous pouvez restaurer le fichier geshi.php d’il y a 5 jours :
$sudo duplicity -t5D --file-to-restore extensions/geshi.php file:///home/nom_utilisateur/backups/duplicity/var/lib/mediawiki/ /home/nom_utilisateur/restore/geshi.php
MySQL
Pour réaliser nos sauvegardes de bases MySQL nous allons utiliser le script AutoMySQLBackup . Ce script se chargera de faire des sauvegardes quotidiennes, hebdomadaires et mensuelles dans des répertoires /daily , /weekly , /monthly et se chargera de faire la rotation entre ces différents répertoires. Le script peut sauvegarder plusieurs bases, les compresser, envoyer des logs par email, etc.
Placez ce script dans votre répertoire /home par exemple et donnez lui les droits d’exécution :
$sudo chmod 700 automysqlbackup.sh
Editez ensuite le fichier :
$sudo nano automysqlbackup.sh
et modifiez les lignes USERNAME et PASSWORD pour y indiquer un nom d’utilisateur et un mot de passe ayant le droit d’accéder à vos bases. Si votre serveur MySQL est installé en local, laissez DBHOST à localhost , dans le cas contraire indiquez l’adresse IP du serveur MySQL distant.
Modifiez ensuite la variable DBNAMES pour y indiquer le nom des bases que vous voulez sauvegarder en les séparant par des espaces.
Indiquez ensuite pour la variable BACKUPDIR l’emplacement où vous souhaitez enregistrer vos sauvegardes, par exemple /home/nom_utilisateur/backups . C’est dans ce répertoire que le script créera ses propres répertoires.
Si vous souhaitez recevoir un mail en cas d’erreur, donnez la valeur quiet à la variable MAILCONTENT et indiquez votre adresse email pour MAILADDR .
Il ne reste plus qu’à programmer l’exécution de ce script :
$sudo crontab -e
Ajoutez la ligne suivante pour une exécution quotidienne à 23h00 :
0 23 * * * /home/nom_utilisateur/automysqlbackup.sh
Le script créera des répertoires indépendants pour chacune de vos bases dans les répertoires /daily , /weekly et /monthly et enregistrera dedans chaque sauvegarde dans un classique format d’export MySQL, compressé en .gz. Par exemple on trouvera dans le répertoire /daily/mediawiki :
mediawiki_2010-07-23_23h00m.Friday.sql.gz
mediawiki_2010-07-25_23h00m.Sunday.sql.gz
mediawiki_2010-07-26_23h00m.Monday.sql.gz
mediawiki_2010-07-27_23h00m.Tuesday.sql.gz
mediawiki_2010-07-28_23h00m.Wednesday.sql.gz
mediawiki_2010-07-29_23h00m.Thursday.sql.gz
Au bout d’une semaine le plus ancien backup sera déplacé dans le répertoire /weekly/mediawiki :
mediawiki_week.28.2010-07-17_23h00m.sql.gz
mediawiki_week.29.2010-07-24_23h00m.sql.gz
La même chose se fera au bout d’un mois pour le répertoire /monthly/mediawiki :
Tags : Backup , Linux , MySQL , Ubuntumediawiki_2010-07-01_23h00m.July.mediawiki.sql.gz










