From 40bc57e8ce4978bba681fcfe5d8d3ae7918542c6 Mon Sep 17 00:00:00 2001 From: polytan02 Date: Wed, 15 Feb 2017 00:00:22 +0000 Subject: [PATCH] Initial backup and restore scripts --- scripts/backup | 30 ++++++++++++++++++++++++++++++ scripts/restore | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 scripts/backup create mode 100644 scripts/restore diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..33598f1 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,30 @@ +#!/bin/bash + +# Source app helpers +source /usr/share/yunohost/helpers + +# Récupère les infos de l'application. +app=$YNH_APP_INSTANCE_NAME + +final_path=$(ynh_app_setting_get $app final_path) +domain=$(ynh_app_setting_get $app domain) +db_user=$(ynh_app_setting_get $app db_user) + +# The parameter $1 is the backup directory location +# which will be compressed afterward +backup_dir=$1/apps/$app +sudo mkdir -p "$backup_dir" + +# Backup sources & data +sudo cp -a $final_path/. $backup_dir/sources + +# Copy Nginx and YunoHost parameters to make the script "standalone" +sudo cp -a /etc/yunohost/apps/$app/. $backup_dir/yunohost +sudo cp -a /etc/nginx/conf.d/$domain.d/$app.conf $backup_dir/nginx.conf + +# Copy dedicated php-fpm process to backup folder +sudo cp -a /etc/php5/fpm/pool.d/$app.conf $backup_dir/php-fpm.conf + +# Backup db +root_pwd=$(sudo cat /etc/yunohost/mysql) +sudo mysqldump -u root -p$root_pwd --no-create-db $db_user --result-file="$backup_dir/db.sql" diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..7933f34 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,46 @@ +#!/bin/bash + +# Source app helpers +source /usr/share/yunohost/helpers + +# Récupère les infos de l'application. +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get $app domain) +path=$(ynh_app_setting_get $app path) +final_path=$(ynh_app_setting_get $app final_path) +db_user=$(ynh_app_setting_get $app db_user) +db_pwd=$(ynh_app_setting_get $app db_pwd) + +if [ -d $final_path ]; then + echo "There is already a directory: $final_path " >&2 + exit 1 +fi + +# The parameter $1 is the uncompressed restore directory location +backup_dir=$1/apps/$app + +# Restore Nginx +conf=/etc/nginx/conf.d/$domain.d/$app.conf +if [ -f $conf ]; then + echo "There is already a nginx conf file at this path: $conf " >&2 + exit 1 +fi +sudo cp -a $backup_dir/nginx.conf $conf + +# Restore YunoHost parameters +sudo cp -a $backup_dir/yunohost/. /etc/yunohost/apps/$app + +# Restore sources & data +sudo cp -a "$backup_dir/sources/." $final_path + +ynh_mysql_create_db $db_user $db_user $db_pwd +mysql --debug-check -u $db_user -p$db_pwd $db_user < ${backup_dir}/db.sql + +# Copy dedicated php-fpm process from backup folder to the right location +sudo cp -a $backup_dir/php-fpm.conf /etc/php5/fpm/pool.d/$app.conf + +# And Reload services +sudo service php5-fpm reload +sudo service nginx reload +