From dc9c5305e4a437de5d6f966abade51e2910a3e41 Mon Sep 17 00:00:00 2001 From: Anmol Date: Fri, 21 Jul 2017 14:41:44 +0530 Subject: [PATCH] Added backup and restore script --- scripts/backup | 54 ++++++++++++++++++++++++++++++++ scripts/restore | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 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..3d839bd --- /dev/null +++ b/scripts/backup @@ -0,0 +1,54 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit on command errors and treat access to unset variables as an error +set -eu + +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +if [ ! -e _common.sh ]; then + # Get the _common.sh file if it's not in the current directory + sudo cp ../settings/scripts/_common.sh ./_common.sh + sudo chmod a+rx _common.sh +fi +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= + +app=$YNH_APP_INSTANCE_NAME + +final_path=$(ynh_app_setting_get $app final_path) +domain=$(ynh_app_setting_get $app domain) +db_name=$(ynh_app_setting_get $app db_name) +db_pwd=$(ynh_app_setting_get $app mysqlpwd) + +#================================================= +# STANDARD BACKUP STEPS +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= +ynh_backup "$final_path" "sources" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "nginx.conf" + +#================================================= +# BACKUP THE MYSQL DATABASE +#================================================= +ynh_mysql_dump_db "$db_name" > db.sql + + +# Backup cron job +ynh_backup "/etc/cron.d/$app" "$app" diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..326b1d1 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,83 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit on command errors and treat access to unset variables as an error +set -eu + +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +if [ ! -e _common.sh ]; then + # Get the _common.sh file if it's not in the current directory + sudo cp ../settings/scripts/_common.sh ./_common.sh + sudo chmod a+rx _common.sh +fi +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get $app domain) +path_url=$(ynh_app_setting_get $app path) +is_public=$(ynh_app_setting_get $app is_public) +final_path=$(ynh_app_setting_get $app final_path) +db_name=$(ynh_app_setting_get $app db_user) +db_pwd=$(ynh_app_setting_get $app db_pwd) + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= +sudo yunohost app checkurl "${domain}${path_url}" -a "$app" \ + || ynh_die "Path not available: ${domain}${path_url}" +test ! -d $final_path \ + || ynh_die "There is already a directory: $final_path " + +#================================================= +# STANDARD RESTORATION STEPS +#================================================= +# RESTORE THE NGINX CONFIGURATION +#================================================= +ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# RESTORE THE MYSQL DATABASE +#================================================= +ynh_mysql_setup_db $db_name $db_name $db_pwd +ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_restore_file "$final_path" +# set permission +sudo chown -R www-data:www-data $final_path +sudo chmod -R 777 $final_path/view/smarty3 + +#================================================= +# RESTORE THE CRON FILE +#================================================= +ynh_restore_file "/etc/cron.d/$app" + + +# Make app public if necessary +if [ "$is_public" = "Yes" ]; +then + ynh_app_setting_set $app skipped_uris "/" +else + ynh_app_setting_set $app protected_uris "/" +fi + +# And Reload services +sudo service php5-fpm reload +sudo service nginx reload + +sudo yunohost app ssowatconf