Script de sauvegarde pour OwnCloud

Script de sauvegarde pour Owncloud comprenant les fichiers et la base de données à lancer chaque semaine pour éviter la perte de données.
  • Administration système
OwnCloud X Serveur
Page d’accueil du logiciel OwnCloud X sur un serveur dédié

Il y a peu j’ai commencé à louer un serveur dédié par cher chez Kimsufi pour faire des sauvegardes automatiques de mon ordinateur (je vous  conseille fortement de sauvegarder vos données ainsi). Le but étant d’avoir une synchronisation permanente de mes données pour être sûr de ne pas les perdre ; j’ai donc choisi OwnCloud car c’est gratuit, que ça fonctionne très bien et que ça dispose de plein de fonctionnalités.

Les outils comme OwnCloud sont géniaux, l’utilitaire se lance et synchronise en temps réel nos données entre deux points. Si jamais mon ordi explose, j’aurais toujours mes données sur mon serveur, et vice-versa.

OwnCloud et la suppression de données

Le seul « point négatif » concerne la suppression. Si jamais vous supprimez une donnée en local ou sur le serveur, la suppression se répercute sur le second point miroir. Autrement dit si je supprime un document sur mon ordinateur, OwnCloud va aller le supprimer sur le serveur.

Cette fonctionnalité est tout à fait normal, cependant si jamais vous supprimez par mégarde un document, vous le perdez également sur le serveur.

Sauvegarder les données OwnCloud chaque semaine

Pour pallier à ce problème, j’ai créé un simple script bash qui tourne dans la crontab root.

Le script se charge de sauvegarder chaque semaine l’ensemble de mes données dans un dossier zippé.

En plus des fichiers, le script récupère également la base de données OwnCloud, utile si jamais le serveur crash.

Script de sauvegarder OwnCloud

J’ai ouvert le script dans un dist github pour que tout le monde puisse y avoir accès, le voici.

#!/bin/bash
set -e

# @explain this script is run by a cronjob every week
### “At 04:00 on Saturday.”
### 0 4 * * 6 /opt/backup-owncloud.sh > /home/alex/backup-owncloud.log 2>&1

# @vars defined
MAX_BACKUP_FILES=52 # keep my backup files during one year

# @vars global
CURRENT_DATE=`date +"%Y_%m_%d-%H_%M_%S"`

# @vars backup
BACKUP_FROM="/home/web/html/owncloud"
BACKUP_DESTINATION="/home/alex/backup"
BACKUP_OWNCLOUD="${BACKUP_DESTINATION}/owncloud/${CURRENT_DATE}"

# @vars directories
DIR_OWNCLOUD="/var/www/html/owncloud"

# @ init
mkdir -vp "${BACKUP_OWNCLOUD}"
echo "-|--- Owncloud backup started on ${CURRENT_DATE}"

# @backup database
echo "-| Backup : Database"
DB_USER="owncloud"
DB_PASS=''
mysqldump --lock-tables -h localhost -u "${DB_USER}" -p${DB_PASS} owncloud >> "${BACKUP_OWNCLOUD}/owncloud.sql"

# @backup directory
echo "-| Backup : Directory"
# rsync -AazPq "${DIR_OWNCLOUD}" "${BACKUP_OWNCLOUD}"
zip -0 -r -qq "${BACKUP_OWNCLOUD}/files.zip" "${DIR_OWNCLOUD}"

# free disk space
echo "-| Backup : Freeing space"
NUMBER_OF_FILES=`ls -1 | wc -l`
if [ "${NUMBER_OF_FILES}" -gt "${MAX_BACKUP_FILES}" ]; then
    FILE_TO_DELETE=`ls -tr ${BACKUP_DESTINATION}/owncloud | head -n 1`
    rm -Rf "${FILE_TO_DELETE}"
fi

echo "-| Backup size : `du -hs ${BACKUP_OWNCLOUD}`"

# @ end
echo "-|--- Owncloud backup ended on `date +"%d/%m/%Y at %H:%M:%S"`"

Je logue toute la sortie pour être sur que tout se déroule bien, vous pouvez également vous l’envoyer par e-mail pour être sur que tout se soit bien déroulé.

mkdir: création du répertoire « /home/alex/backup/owncloud/2019_10_12-04_00_01 »
-|--- Owncloud backup started on 2019_10_12-04_00_01
-| Backup : Database
-| Backup : Directory
-| Backup : Freeing space
-| Backup size : 5,3G	/home/alex/backup/owncloud/2019_10_12-04_00_01
-|--- Owncloud backup ended on 12/10/2019 at 04:06:21

Article publié le

Dernière modification le

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.