Outils pour utilisateurs

Outils du site


Panneau latéral

Traductions de cette page:

VEILLE

docs:sauvegarde_debian_avec_dropbox

Sauvegarde serveur Debian avec Dropbox

Dropbox offre un client pour Linux qui permet de mettre en place une sauvegarde automatisée sur un serveur Debain (limite volume en version gratuite 2 Go).

Dans le scénario décrit ici (testé sous Debian 9) :

  • sauvegarde d'une arborescence de fichiers et des dumps des bases de données auxquelles un user Mysql a accès : tout ceci est compressé avec la commande tar
  • ces données sont créées dans un répertoire dédié sur la partition la plus large du serveur (elle est ici montée en /home)
  • confidentialité : un chiffrement est appliqué avec gpg et les fichiers cryptés sont créés dans un second répertoire dans /home
  • ce dernier répertoire est synchronisé sur Dropbox via un lien symbolique
  • on ajoute aux noms de fichiers la date et l'heure, et on conserve (en local et donc sur Dropbox) les fichiers à synchroniser pendant 15 jours

Préparation serveur

Installation de Dropbox

Procédure effectuée ici avec l'utilisateur root.

Télécharger et décompresser Dropbox : cd ~ && wget -O - “https://www.dropbox.com/download?plat=lnx.x86_64” | tar xzf -

Le lancer pour le configurer : ~/.dropbox-dist/dropboxd

note : il faut avoir ouvert une session Dropbox dans un navigateur sur PC car la configuration va se traduire par la génération d'une URL contenant un token, qu'il suffira de copier dans le navigateur pour associer le serveur au compte Dropbox.

Vérifier que la synchro Dropbox est OK en déposant un copiant un fichier dans: /root/Dropbox

Configuration Dropbox comme service lancé au démarrage

Créer le script de démarrage : /etc/init.d/dropbox

#!/bin/sh
#dropbox service
DROPBOX_USERS="root"
 
DAEMON=.dropbox-dist/dropboxd
 
start() {
   echo "Starting dropbox..."
   for dbuser in $DROPBOX_USERS; do
       HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
       if [ -x $HOMEDIR/$DAEMON ]; then
    echo $dbuser
           HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
       fi
   done
}
 
stop() {
   echo "Stopping dropbox..."
   for dbuser in $DROPBOX_USERS; do
       HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
       if [ -x $HOMEDIR/$DAEMON ]; then
           start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
       fi
   done
}
 
status() {
   for dbuser in $DROPBOX_USERS; do
       dbpid=`pgrep -u $dbuser dropbox`
       if [ -z $dbpid ] ; then
           echo "dropboxd for USER $dbuser: not running."
       else
           echo "dropboxd for USER $dbuser: running (pid $dbpid)"
       fi
   done
}
 
case "$1" in
 
   start)
       start
       ;;
   stop)
       stop
       ;;
   restart|reload|force-reload)
       stop
       start
       ;;
   status)
       status
       ;;
   *)
       echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
       exit 1
 
esac

exit 0

Le rendre exécutable : sudo chmod +x /etc/init.d/dropbox

L’inscrire au démarrage du serveur : sudo update-rc.d dropbox defaults

Création lien symbolique

On va déposer en local nos archives cryptées à synchroniser dans /home/backups/Dropbox et on souhaite que la synchronisation s'effectue dans un sous-répertoire backups du Dropbox :

ln -s /home/backups/Dropbox /root/Dropbox/backups

Installation gnupg

Pour le cryptage on utilisera GnuPG : apt-get install gnupg

Exemple script sauvegarde

#!/bin/sh

# configuration de l'utilisateur MySQL et de son mot de passe
DB_USER="NOM_USER_BDD"
DB_PASS="MDP_BDD"
# configuration de la machine hébergeant le serveur MySQL
DB_HOST="localhost"

# Prefix de nommage des fichiers (date et heure)
PREFIX=`date +%Y%m%d-%H%M%S`

# Mot de passe GPG
PASSPHRASE="MDP_CRYPTAGE"

# Répertoires sauvegarde : répertoire local (pour les tar) et pôur synchro Dropbox (les créer avant !!)
REPBKUP_LOCAL="/home/backups/valeurdusage.net"
REPBKUP_DB="/home/backups/Dropbox/valeurdusage.net"

# Archivage répertoire
cd /var/www/valeurdusage.net
tar zcpvf $REPBKUP_LOCAL/${PREFIX}_backup_fs_wp.gz .

# Récupération de la liste des bases
DATABASES=`MYSQL_PWD=$DB_PASS mysql -u $DB_USER -e "SHOW DATABASES;" | tr -d "| " | grep -v -e Database -e _schema -e mysql`

# Boucle sur les bases pour les dumper
for DB_NAME in $DATABASES; do
    MYSQL_PWD=$DB_PASS mysqldump -u $DB_USER --single-transaction --skip-lock-tables $DB_NAME -h $DB_HOST> $REPBKUP_LOCAL/${PREFIX}_$DB_NAME.sql
done

# Boucle sur les noms de bases pour compresser les dumps et les crypter
for DB_NAME in $DATABASES; do
    gzip $REPBKUP_LOCAL/${PREFIX}_$DB_NAME.sql
    gpg --yes --batch --cipher-algo=AES256 --passphrase=$PASSPHRASE -c $REPBKUP_LOCAL/${PREFIX}_$DB_NAME.sql.gz
done

# Crypte le backup du filesystem
    gpg --yes --batch --cipher-algo=AES256 --passphrase=$PASSPHRASE -c $REPBKUP_LOCAL/${PREFIX}_backup_fs_wp.gz

# Copie les fichiers cryptés vers le répertoire synchronisé sur Dropbox
cp $REPBKUP_LOCAL/*.gpg $REPBKUP_DB/

# Supprime les archives non cryptées
rm $REPBKUP_LOCAL/*.gz

# Purge en local (donc y compris synchro Dropbox) les fichiers de plus de 15 jours
find $REPBKUP_LOCAL -mtime +15 -exec rm {} \;
find $REPBKUP_DB -mtime +15 -exec rm {} \;

Ne reste plus qu'à créer un cronjob pour lancer le script toutes les nuits.

docs/sauvegarde_debian_avec_dropbox.txt · Dernière modification: 2018/11/05 10:29 par ssa