Blog de Philip Doxakis    LinkedIn    GitHub    RSS

Comment faire un backup automatisé? (PARTIE 1)

Ubuntu sur DigitalOcean

Script de backup

Cet article a pour but de présenter la manière que vous pourriez envisager de faire vos backups. Je vais présenter divers exemples de scénarios.

Cet article fait partie d’une série de 2. D’abord, je vais m’intéresser au backup sur Linux. Dans un deuxième temps, je vais traiter des solutions sur Windows.

Backup de la machine

DigitalOcean offre un mécanisme de backup à 20% du prix de la droplet. Ce backup a lieu une fois par semaine.

Ce type de backup peut-être intéressant pour facilement conserver la configuration de votre machine et les données des bases de données.

Il peut être intéressant de l’utiliser pour un site web peu fréquenté ou lorsque la base de données est peu modifiée.

Avantages:

  • Facile à mettre en place
  • Facile de restaurer la droplet

Désavantage:

  • Le backup couvre une grande période de temps (168 heures = 1 semaine). Au maximum, vous perdrez 1 semaine de données.
  • Vous n’avez pas de contrôle sur la fréquence et le moment que le backup est réalisé.
  • 20% du prix de la droplet

Vous pourriez toujours créer un snapshot. Par contre, ce n’est peut-être pas le plus efficace. De plus, à partir du 1er octobre, ils vont commencer à être payants. En réalité, le plus important est bien souvent seulement la base de données utilisée par votre application.

Conseil:

Utiliser un floating IP pour votre droplet. Lorsque vous allez la recréer, vous n’aurez pas nécessairement la même adresse IP. La floating IP ne changera pas. Ainsi, vous pouvez rapidement faire un switch entre l’ancienne droplet et la nouvelle droplet. Vous n’aurez pas à attendre la propagation du DNS sur le réseau internet. Cela peut représenter tout de même une attente de 3 heures.

Backup sqlite vers dropbox

Lorsque vous avez un site web fréquenté et vous désirez avoir un backup récent.

Je vous suggère d’utiliser une tâche planifiée avec crontab.

Le script de backup que je vous suggère permet de téléverser un backup de la base de données sur dropbox dans un fichier compressé. Vous aurez de besoins du script Dropbox-Uploader et de le configurer en utilisant l’utilisateur root.

Vous aurez à ajouter une entrée dans crontab à l’aide de l’utilisateur root avec la commande : crontab -e

0 */6 * * * /home/monCompte/backup.sh >/dev/null 2>&1

Le script backup.sh est appelé à tous les 6 heures.

Notez: Le script présente la procédure pour une base de données sqlite.

Script de backup :

#!/bin/bash
cd /Data
sqlite3 MonAppProduction.db <<EOF
.timeout 20000
.backup /Backup/MonAppProduction.db
EOF

TMP_DIR="/tmp/"
DATE=$(date +"%d-%m-%Y_%H%M")
BKP_FILE="$TMP_DIR/DatabaseBackup_$(date +"%d-%m-%Y_%H-%M").tar"
BKP_DIRS="/Backup"
DROPBOX_UPLOADER=/home/monCompte/dropbox_uploader.sh

tar cf "$BKP_FILE" $BKP_DIRS
gzip "$BKP_FILE"

$DROPBOX_UPLOADER -f /root/.dropbox_uploader upload "$BKP_FILE.gz" "/$(date +"%m")/$(date +"%d")/" > /home/monCompte/log_upload.txt

rm -fr "$BKP_FILE.gz"

Suivi des tâches planifiées

Une manière simple de faire le suivi est de vous envoyer un mail vous indiquant que le backup a fonctionné. Si vous ne recevez plus de mail, vous pouvez suspecter un problème.

Vous pourriez installer mailutils et ajouter cette ligne à la fin de votre script de backup :

echo "body content" | mail -s "mail title" monCourriel@gmail.com

Backup du code source

Vous pourriez tout simplement utiliser un dépôt git.

Il existe plusieurs compagnies offrant des services pour héberger votre code source :

  • Bitbucket (gratuit pour 5 utilisateurs et moins. Idéal pour un petit projet)
  • GitHub (projet public gratuit. Dépôts privés gratuits si vous êtes étudiant.)
  • GitLab.com (gratuit et projets privés)

Si vous désirez héberger sur vos propres serveurs, GitLab pourrait être utilisé. Il y a des machines virtuelles déjà prêtes ici afin de simplifier l’installation.