diff --git a/scripts/backup b/scripts/backup index 9549643..2714b39 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,3 +1,24 @@ #!/bin/bash -#TODO +# Exit on command errors and treat unset variables as an error +set -eu + +# See comments in install script +app=$YNH_APP_INSTANCE_NAME + +# Source YunoHost helpers +source /usr/share/yunohost/helpers + +# Backup sources & data +# Note: the last argument is where to save this path, see the restore script. +ynh_backup "/var/www/${app}" "sources" + +# Dump the database +dbname=$app +dbuser=$app +dbpass=$(ynh_app_setting_get "$app" dbpass) +mysqldump -u "$dbuser" -p"$dbpass" --no-create-db "$dbname" > ./dump.sql + +# Copy NGINX configuration +domain=$(ynh_app_setting_get "$app" domain) +ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "nginx.conf" diff --git a/scripts/restore b/scripts/restore index 9549643..153f2fd 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,3 +1,42 @@ #!/bin/bash -#TODO +# Note: each files and directories you've saved using the ynh_backup helper +# will be located in the current directory, regarding the last argument. + +# Exit on command errors and treat unset variables as an error +set -eu + +# See comments in install script +app=$YNH_APP_INSTANCE_NAME + +# Source YunoHost helpers +source /usr/share/yunohost/helpers + +# Retrieve old app settings +domain=$(ynh_app_setting_get "$app" domain) +path=$(ynh_app_setting_get "$app" path) + +# Check domain/path availability +sudo yunohost app checkurl "${domain}${path}" -a "$app" \ + || ynh_die "Path not available: ${domain}${path}" + +# Restore sources & data +src_path="/var/www/${app}" +sudo cp -a ./sources "$src_path" + +# Restore permissions to app files +# you may need to make some file and/or directory writeable by www-data (nginx user) +sudo chown -R root: "$src_path" + +# Create and restore the database +dbname=$app +dbuser=$app +dbpass=$(ynh_app_setting_get "$app" dbpass) +ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass" +ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" < ./dump.sql + +# Restore NGINX configuration +sudo cp -a ./nginx.conf "/etc/nginx/conf.d/${domain}.d/${app}.conf" + +# Restart webserver +sudo service nginx reload