Goood Morning Ubuntu People !
Je reviens parmi vous pour expliquer le montage que j'ai fait en sauvegarde sur le cloud Hubic pour obtenir un système de backup incrémentiel.
Sur mon ordi je fais des sauvegardes avec BackInTime sur des disques externes, mais le problème c'est que les disques sont toujours présents physiquement au même endroit. J'en ai un toujours avec moi quand même au cas ou il y est un cambriolage, mais du coup les sauvegardes sont faites de manière aléatoire tous les deux / trois mois...
Donc je me suis dit, je vais automatiser tout cela. Ma première approche à été de le faire à distance chez une personne de confiance (un petit Raspebery py, un vpn et hop !). Sauf qu'ici le problème c'est le débit qui était très très très médiocre...
Alors je me suis tourné vers le cloud, Hubic pour être précis, afin que mes données ne tombent pas entre les mains de la CIA, NSA, GAFA / Patriot Act, qui du fait d'hébergé aux USA fait de vos donnés leur propriété...
J'ai dans un premier temps utilisé l'appli Hubic pour ubuntu qui fonctionne plutôt bien avec une conservation des versions possible. Cependant, les sauvegardes incrémentielles ne sont pas possible.
J'ai donc procédé de la manière suivante :
1 - j'ai monté le dossier hubic pour avoir un accès permanent directement depuis mon pc. Pour cela j'ai utilisé HubicFuse,
ce tuto explique bien le fonctionnement la mise en place.
2 - J'ai adapté un script bash pour faire avec Rsync une sauvegarde incrémentielle,
pour cela j'ai suivi ce tuto.
Voici mon script que j'ai adapté du tuto:
#!/bin/bash
# programme de sauvegarde
#
# indications repertoires et infos
# date
date=$(date +%d%m%Y%T)
destination=/mnt/hubic/default/Sauvegardes
# home
source_home=/home/Perso/test/
excludefile_home=/home/arnaud/cronjob/.backup_fichiers_exclus_home
# data
#source_data=/media/autre_partition_a_sauver
#excludefile_data=.backup_exclude_data
# pour donner un nom "raccourci" au fichier backuperror.log :
backuplog=/home/arnaud/Bureau/Erreurs-BackUp/backuperror_timemachine.log
# Vérifie la présence du volume
if [ ! -e "$destination" ]
then
echo "Erreur, le volume de sauvegarde est absent pour la sauvegarde."
echo
exit
fi
#titre de lancement de la sauvegarde générale
echo
echo "La sauvegarde est en cours"
echo
# explications
# ">" renvoie le contenu du terminal dans le fichier indiqué en écrasant tout ce que contient déjà ce fichier.
# ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier.
# Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs générés par le processus dans le fichier indiqué
# en écrasant le contenu de ce fichier.
# "2>>" renvoie les erreurs sans écraser le contenu du fichier.
#
# Sauvegarde de '/rep_source' vers '/rep_destination' :
# explications des parametres
#
# -l : traiter les liens symboliques comme liens symboliques (ne pas suivre le chemin du lien)
# --archive mode archivage; identique à -rlptgoD (pas -H)
# --delete-during : effacer fichier sur destination pendant synchronisation si n'existe pas sur source
# --stats : Demande à rsync d'afficher un jeu de statistiques verbeux sur le transfert de fichiers,
# --exclude-from : permet d'exclure des fichiers et dossiers a partir d'une liste
#
#titre de lancement de la sauvegarde du home
echo
echo "Sauvegarde sur Hubic est en cours..."
echo
rsync -aPv --compress --delete-during --stats --link-dest=$destination/current --exclude-from=$excludefile_home $source_home $destination/back-$date 2> $backuplog
#
#titre de lancement de la sauvegarde de data
#echo
#echo "TimeMachine Sync de Data est en cours..."
#echo
#rsync -aPv --compress --delete-during --stats --link-dest=$destination/current --exclude-from=$excludefile_data $source_data $destination/back-$date 2> $backuplog
#suppression du lien
rm -f $destination/current
# creation du lien qui servira pour la prochaine synchro
ln -s $destination/back-$date $destination/current
# effacer ancienne sauvegarde de plus de 100 jours
find $destination -maxdepth 1 -type d -mtime +100 | xargs rm -rf
# Insertion de la date à la fin de la liste d'erreur si le fichier backuperror n'est pas vide (c'est à dire s'il y a des erreurs),
# ce que vérifie l'option "-s" :
if [ -s $backuplog ]; then
{
date >> $backuplog
}
fi
# Indique une action si le fichier n'est pas vide :
if [ -s $backuplog ]; then
{
echo
echo "Ouverture du fichier d'erreur de sauvegarde"
echo
sleep 5;
nano $backuplog
}
# efface le fichier pour qu'il ne soit ouvert au démarrage suivant de l'ordinateur
# que s'il a été recréé avec mention d'erreurs lors du déroulement de la sauvegarde suivante.
rm $backuplog
else
echo
echo "La sauvegarde s'est bien effectuée..."
echo "Vous pouvez fermer cette fenetre"
fi
3 - j'ai d'abord testé le script en local, ça fonctionne parfaitement.
4 - Et c'est ici mon problème... Lorsque je teste ma sauvegarde directement sur mon dossier monté hubic (/mnt/hubic/) elle fonctionne correctement. Cependant, à chaque sauvegarde Rsync sauvegarde l'intégralité des fichiers et non pas seulement les modifiés contrairement à ce qui se passe en local... Je n'ai pas de problème de place puisque j'ai pris 10 To chez hubic, mais avec une sauvegarde hebdomadaire de 200 Go en 50 jours ce sera plein, sans compter la durée des sauvegardes qui vont prendre énormément de temps...
Quelqu'un verrait il d'où vient le problème ? Pourquoi Rsync ne fait pas de comparaison ?
Je remercie par avance celui ou celle qui pourra m'aider !