From 95f3bbb1b7d03099c9b891e897ced81c288db8a8 Mon Sep 17 00:00:00 2001 From: Kayou Date: Wed, 30 Jan 2019 00:43:09 +0100 Subject: [PATCH] update backup and restore scripts --- scripts/backup | 66 +++++++++++++++++++++++-------- scripts/install | 1 + scripts/restore | 102 ++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 136 insertions(+), 33 deletions(-) diff --git a/scripts/backup b/scripts/backup index 5aeb435..9efb470 100755 --- a/scripts/backup +++ b/scripts/backup @@ -1,23 +1,57 @@ #!/bin/bash -# DotClear 2 backup script for YunoHost -app=dotclear2 +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -# The parameter $1 is the backup directory location -# which will be compressed afterward -backup_dir=$1/apps/$app -sudo mkdir -p $backup_dir -sudo chown admin $backup_dir +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers -# Backup sources -sudo cp -a /var/www/$app/. $backup_dir/sources +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= -# Backup database -db_password=$(sudo yunohost app setting $app db_password) -sudo mysqldump -u $app -p"$db_password" $app > $backup_dir/dump.sql +ynh_clean_setup () { + ### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors -# Copy Nginx and YunoHost parameters to make the script "standalone" -sudo cp -a /etc/yunohost/apps/$app/. $backup_dir/yunohost -domain=$(sudo yunohost app setting $app domain) -sudo cp -a /etc/nginx/conf.d/$domain.d/$app.conf $backup_dir/nginx.conf +#================================================= +# 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) + +#================================================= +# STANDARD BACKUP STEPS +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup "$final_path" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# BACKUP THE PHP-FPM CONFIGURATION +#================================================= + +ynh_backup "/etc/php/7.0/fpm/pool.d/$app.conf" + +#================================================= +# BACKUP THE MYSQL DATABASE +#================================================= + +ynh_mysql_dump_db "$db_name" > db.sql diff --git a/scripts/install b/scripts/install index 1cea983..55360ac 100755 --- a/scripts/install +++ b/scripts/install @@ -150,4 +150,5 @@ fi # RELOAD NGINX #================================================= +systemctl reload php7.0-fpm systemctl reload nginx diff --git a/scripts/restore b/scripts/restore index 66ed6b3..052cbc1 100755 --- a/scripts/restore +++ b/scripts/restore @@ -1,24 +1,92 @@ #!/bin/bash -# DotClear 2 restore script for YunoHost -app=dotclear2 +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= -# The parameter $1 is the uncompressed restore directory location -backup_dir=$1/apps/$app +source ../settings/scripts/_common.sh +source /usr/share/yunohost/helpers -# Restore sources -sudo cp -a $backup_dir/sources/. /var/www/$app +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= -# Restore database -root_pwd=$(sudo cat /etc/yunohost/mysql) -mysql -u root -p$root_pwd -e "DROP DATABASE $app ; DROP USER $app@localhost ;" -db_password=$(sudo yunohost app setting $app db_password) -sudo yunohost app initdb $app -p "$db_password" -s $backup_dir/dump.sql +ynh_clean_setup () { + #### Remove this function if there's nothing to clean before calling the remove script. + true +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors -# Restore Nginx and YunoHost parameters -sudo cp -a $backup_dir/yunohost/. /etc/yunohost/apps/$app -domain=$(sudo yunohost app setting $app domain) -sudo cp -a $backup_dir/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf +#================================================= +# LOAD SETTINGS +#================================================= -# Restart webserver -sudo /etc/init.d/nginx reload +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get $app domain) +path_url=$(ynh_app_setting_get $app path) +final_path=$(ynh_app_setting_get $app final_path) +db_name=$(ynh_app_setting_get $app db_name) + +#================================================= +# CHECK IF THE APP CAN BE RESTORED +#================================================= + +ynh_webpath_available $domain $path_url \ + || 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 APP MAIN DIR +#================================================= + +ynh_restore_file "$final_path" + +#================================================= +# RESTORE THE MYSQL DATABASE +#================================================= + +db_pwd=$(ynh_app_setting_get $app mysqlpwd) +ynh_mysql_setup_db $db_name $db_name $db_pwd +ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql + +#================================================= +# RECREATE THE DEDICATED USER +#================================================= + +# Create the dedicated user (if not existing) +ynh_system_user_create $app + +#================================================= +# RESTORE USER RIGHTS +#================================================= + +# Restore permissions on app files +chown -R $app: $final_path + +#================================================= +# RESTORE THE PHP-FPM CONFIGURATION +#================================================= + +ynh_restore_file "/etc/php/7.0/fpm/pool.d/$app.conf" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= + +systemctl reload php7.0-fpm +systemctl reload nginx