Table des matières

Backup

Prérequis

Installation et configuration

hubiC

La version Linux étant encore en bêta, nous récupérons le package (.deb) de la dernière version en date directement depuis le serveur OVH 1) avec un wget puis on procède à son installation.

# wget http://mir7.ovh.net/ovh-applications/hubic/hubiC-Linux/2.1.0/hubiC-Linux-2.1.0.53-linux.deb
# dpkg -i hubiC-Linux-2.1.0.53-linux.deb

On obtiendra alors des erreurs à propos de dépendances non satisfaites :

On corrigera ces erreurs via la commande suivante qui se chargera d'installer tout le nécessaire.

# apt-get install -f

A ce stade, si l'on essaye de lancer l'application, nous obtiendrons l'erreur suivante : Cannot contact daemon, are you sure it is running?
La documentation du service nous indique que ce problème survient sur les serveurs ou lors de l'utilisation d'une connexion SSH. On va donc reconfigurer dbus correctement :

# export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --session --fork --print-address)

hubiC est maintenant prêt !

GPG

Nous n'avons ici aucun paquet à installé, tout étant déjà présent par défaut au sein de Linux. Nous aurons juste à importer notre clé GPG publique.

Pour se faire, nous créons un fichier texte, gpg.txt par exemple, et y collons notre clé publique. Ne reste qu'à l'importé via

# gpg --import gpg.txt

Mise en place

Principe

Nous utiliserons la fonction d'archivage incrémentiel de tar pour créer nos sauvegardes.
Nous allons donc créer un dossier, nous avons choisi de le mettre à la racine de notre système et le nommé backups. Nous y ferrons deux sous-dossiers : le premier, que nous appelons temp servira à stocker nos archives en cours de traitement ; le second, save sera indiquer à hubiC en mode synchronisation pour l'envoie vers le service.

Passons à la création de l'archive :

tar -czf /backups/temp/nomArchive_`date --rfc-3339=date`.tar.gz --listed-incremental=/backups/nomArchive.list /unChemin/*

nomArchive correspond au nom de l'archive souhaiter auquel nous ajoutons la date au format AAAA-MM-JJ. nomArchive.list contient la liste des fichiers et de leur état depuis la dernière fois que nous avons exécuter l'opération.

Une fois l'archive créée, on la crypte pour assurer la confidentialité de nos données.

gpg --encrypt --recipient idKeyPgp nomArchive.tar.gz

idKeyPgp étant l'id de votre clé publique précédement importer et nomArchive, l'archive créer précédemment.

Enfin, on déplace notre archive gpg (nomArchive.tar.gz.gpg) vers le dossier save en vue de sa synchronisation sur hubiC, sans oublier de supprimer l'archive restante devenue inutile (nomArchive.tar.gz).

mv /backups/temp/nomArchive.tar.gz.gpg /backups/save/
rm /backups/temp/nomArchive.tar.gz

Script

On reproduit le principe sous forme de script dans lequel on précise les dossiers que l'on veut sauvegarder dans le tableau bk_data.

#!/bin/bash
#
# Création de sauvegarde
#

# Variables
bk_home="/backups"
bk_temp="/backups/temp"
bk_save="/backups/save"
declare -a bk_data=("/premier/dossier" "/deuxieme/dossier")

# Parcourir la liste
for folder in "${bk_data[@]}"
do
  echo "$folder - Debut de sauvegarde"

  # On se déplace dans le dossier
  cd $folder

  # Nom du répertoire à sauvegarder
  bk_name=`pwd | sed 's#.*/##'`

  # Creation de l'archive
  tar -czf $bk_temp/$bk_name"_"`date --rfc-3339=date`.tar.gz --listed-incremental=$bk_home/$bk_name.list $folder

  # Cryptage de l'archive
  gpg --encrypt --recipient 2AC34D90 $bk_temp/$bk_name"_"`date --rfc-3339=date`.tar.gz

  # Creation d'un sous-dossier si necessaire
  if [ ! -d "$DIRECTORY" ]; then
    mkdir $bk_save/$bk_name
  fi
  # Deplacer les fichiers vers le dossier de synchronisation hubiC
  mv $bk_temp/$bk_name"_"`date --rfc-3339=date`.tar.gz.gpg $bk_save/$bk_name
  rm $bk_temp/$bk_name"_"`date --rfc-3339=date`.tar.gz
  cp $bk_home/$bk_name.list $bk_save/$bk_name

  # Sortir du dossier à sauvegarder
  cd $bk_home

  echo "$folder - Fin de sauvegarde"
done
Il ne faudra pas oublier de lancer la synchronisation avec la commande
hubic login mailHubic dossierASynchro

On pourra également exécuter le script via une tache planifiée pour automatiser la tâche.