Backup serveur sur Cloud Hubic Backup serveur sur Cloud Hubic
Menu

Sauvegarde serveur sur Cloud Hubic

10 juillet 2016 - Serveur Cloud VPS
Sauvegarde serveur sur Cloud Hubic

Après un bug de mon serveur et la non récupération de certaines données sauvegardées en FTP j’ai voulu sécuriser entre plus mes sauvegardes en doublant le système et sans passer par une compression des fichiers.

Pour cela j’ai utilisé RCLONE http://rclone.org/ avec un fichier bash cela me permet de sauvegarder mes dossiers et mes bases de données.

Pour l’installation : Télécharger ici : http://rclone.org/downloads/ la version qui convient à votre installation. Un wget avec le lien marche très bien.

Ensuite il faut faire l’installation :

unzip rclone-v1.17-linux-amd64.zip
cd rclone-v1.17-linux-amd64
#copy binary file
sudo cp rclone /usr/sbin/
sudo chown root:root /usr/sbin/rclone
sudo chmod 755 /usr/sbin/rclone
#install manpage
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb

Une fois installer il faut faire la configuration je vous invite à regarder la page officiel de Rclone suivant votre cloud. Mois j’ai fait l’installation pour Hubic : http://rclone.org/docs/

Une fois la config terminée il suffit de faire par exemple pour sauvegarder les sites  : rclone copy /var/www/ Hubic:default/CloudVPS/www/

Hubic est le nom donné a mon remote lors de la config de Rclone et ensuite le chemin dans mon cloud Hubic. Pour voir le dossier dans Hubic sur le site web il faut ajouter default. Sinon le fichier n’est pas visible.

Pour automatiser tout cela j’ai fait un fichier bash qui dans un 1er temps sauvegarde mes bases et ensuite fait les différents rclone pour les dossiers à sauvegarder. Si une erreur est détecter le fichier stop et un mail d’erreur est envoyé avec un fichier PHP et si tout va bien un mail est envoyé avec OK.

Le fichier bash :

#!/bin/bash

#fonction analise le retour des commandes $1 si <> de 0 mail avec message $2 et sujet erreur $3
gestion_retour() {
        if [ $1 -ne 0 ]; then
            /home/michelgard/backupHubic/mailBackup.php "\"$2\"" $3
			exit 1
        fi
}

# On liste nos bases de données
LISTEBDD=$( echo 'show databases' |mysql --defaults-extra-file=/etc/mysql/user.sql)
gestion_retour $? 'Erreur lecture noms des bases' 1

for BDD in $LISTEBDD
do
	# Exclusion des BDD information_schema , mysql et Database
	if [ $BDD != "information_schema" ] && [ $BDD != "mysql" ] && [ $BDD != "performance_schema" ] && [ $BDD != "phpmyadmin" ] && [ $BDD != "Database" ]
	then
		# Emplacement du dossier ou nous allons stocker les bases de données, un dossier par base de données
		CHEMIN=/home/final/base_DB/$BDD
		# Si le repertoire de la BDD dans $CHEMIN n'existe pas, on le cree
		if [ ! -d "$CHEMIN" ];then
			mkdir -p $CHEMIN/
		fi
		# On backup notre base de donnees
		mysqldump --defaults-extra-file=/etc/mysql/user.sql --single-transaction --add-drop-database --databases $BDD > "$CHEMIN/$BDD.sql"
		gestion_retour $? 'Erreur sur sauvegarde base' 1
		echo "|Sauvegarde de la base de donnees $BDD.sql ";
	fi
done

#Sauvegarde sur Cloud Hubic avec rclone
#site www
rclone copy /var/www/ Hubic:default/CloudVPS/www/ 
gestion_retour $? 'Erreur sur sauvegarde dossier www' 1

#repertoire ect
rclone copy /etc/ Hubic:default/CloudVPS/etc/ 
gestion_retour $? 'Erreur sur sauvegarde dossier etc' 1

#répertoire my sql
rclone copy /var/lib/mysql/ Hubic:default/CloudVPS/mysql/ 
gestion_retour $? 'Erreur sur sauvegarde dossier /var/lib/mysql' 1

#répertoire michelgard
rclone copy /home/michelgard/ Hubic:default/CloudVPS/home/michelgard 
gestion_retour $? 'Erreur sur sauvegarde dossier michelgard' 1

#répertoire final
rclone copy /home/final/ Hubic:default/CloudVPS/home/final
gestion_retour $? 'Erreur sur sauvegarde dossier final' 1

#les bases sauvées plus haut
rclone copy /home/final/base_DB/ Hubic:default/CloudVPS/base_DB/ 
gestion_retour $? 'Erreur sur sauvegarde des bases' 1

/home/michelgard/backupHubic/mailBackup.php "\"Sauvegarde sur Hubic avec succes !\"" 0

Le PHP pour le mail : J’utilise Gmail donc il faut configurer le php.ini avec vos codes:

#!/usr/bin/php
<?php 
/**
 * Configuration
 */
# email de l'expediteur
$email_from = 'raspberrypi.gard@gmail.com';
# email des destinataires
$email_dest = array('raspberrypi.gard@gmail.com'); 
 
function sendMail($email_dest, $subject, $content, $headers) {
    foreach($email_dest as $dest)
    {
        mail($dest, $subject, $content, $headers);
    }
}

//Argument N° 2 passé avec la page PHP 0 sujet OK et 1 sujet pas OK
if ($argv[2]==0){
	$subject = "Sauvegarde CloudVPS --> Hubic OK"; 
}else{
	$subject = "Sauvegarde CloudVPS --> ERREUR !!!";
}

//Argument N°1 passé avec la page PHP texte du message
$message_html = $argv[1];
$headers = "From: $email_from\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf8\r\n";
sendMail($email_dest, $subject, $message_html, $headers);
?>

Une tache cron toutes les nuit pour lancer le programme. La sauvegarde est incrémentale et sans compression. Et tous les fichiers sont là : https://github.com/Michelgard/backup_rclone_Hubic

Étiquettes : , , , ,