From c06897cecbeb57226956fd85a1b9e9104d6e0b9d Mon Sep 17 00:00:00 2001 From: magikcypress Date: Thu, 9 Mar 2017 01:15:36 +0100 Subject: [PATCH] Refactoriser backup/restore --- scripts/backup | 30 ++++++++++++++---------------- scripts/restore | 49 +++++++++++++++++++++++-------------------------- 2 files changed, 37 insertions(+), 42 deletions(-) diff --git a/scripts/backup b/scripts/backup index 973e26a..805f30c 100644 --- a/scripts/backup +++ b/scripts/backup @@ -3,30 +3,28 @@ # Exit on command errors and treat unset variables as an error set -eu -# The parameter $1 is the backup directory location dedicated to the app -backup_dir=$YNH_APP_ARG_PATH - -# The parameter $2 is theid of the app instance +# Get multi-instances specific variables app=$YNH_APP_INSTANCE_NAME # Source app helpers source /usr/share/yunohost/helpers -domain=$(ynh_app_setting_get $app domain) -final_path=$(ynh_app_setting_get $app final_path) +# Retrieve app settings +domain=$(ynh_app_setting_get "$app" domain) +path=$(ynh_app_setting_get "$app" final_path) +with_mysql=$(ynh_app_setting_get "$app" with_mysql) # Copy the app files -sudo mkdir -p ${backup_dir}/var/www -sudo cp -a $final_path "${backup_dir}/var/www/$app" +DESTDIR="/var/www/${app}" +ynh_backup "$DESTDIR" "sources" 1 # Copy the conf files -sudo mkdir -p "${backup_dir}/conf" -sudo cp -a /etc/nginx/conf.d/$domain.d/$app.conf "${backup_dir}/conf/nginx.conf" - -# Copy dedicated php-fpm process to backup folder -sudo cp -a /etc/php5/fpm/pool.d/$app.conf "${backup_dir}/conf/php-fpm.conf" -sudo cp -a /etc/php5/fpm/conf.d/20-$app.ini "${backup_dir}/conf/php-fpm.ini" +ynh_backup "/etc/nginx/conf.d/${domain}.d/${app}.conf" "conf/nginx.conf" +ynh_backup "/etc/php5/fpm/pool.d/${app}.conf" "conf/php-fpm.conf" +ynh_backup "/etc/php5/fpm/conf.d/20-${app}.ini" "conf/php-fpm.ini" # Backup db -root_pwd=$(sudo cat /etc/yunohost/mysql) -sudo su -c "mysqldump -u root -p$root_pwd --no-create-db $app > ${backup_dir}/db.sql" +if [[ $with_mysql -eq 1 ]]; then + root_pwd=$(sudo cat /etc/yunohost/mysql) + sudo su -c "mysqldump -u root -p$root_pwd --no-create-db $app > ./db.sql" +fi \ No newline at end of file diff --git a/scripts/restore b/scripts/restore index dfe5e06..93810d8 100644 --- a/scripts/restore +++ b/scripts/restore @@ -4,9 +4,6 @@ # Exit on command errors and treat unset variables as an error set -eu -# The parameter $1 is the backup directory location dedicated to the app -backup_dir=$YNH_APP_ARG_PATH - # The parameter $2 is the id of the app instance ex: ynhexample__2 app=$YNH_APP_INSTANCE_NAME @@ -23,38 +20,38 @@ if [ -d $final_path ]; then ynh_die "There is already a directory: $final_path" fi -conf=/etc/nginx/conf.d/$domain.d/$app.conf -if [ -f $conf ]; then - ynh_die "There is already a nginx conf file at this path: $conf" -fi -# Restore conf files -sudo cp -a "${backup_dir}/conf/nginx.conf" $conf +# Check configuration files php-fpm +nginx_conf="/etc/nginx/conf.d/${domain}.d/${app}.conf" +[[ -f $nginx_conf ]] && ynh_die \ +"The NGINX configuration already exists at '${nginx_conf}'. + You should safely delete it before restoring this app." +phpfpm_conf="/etc/php5/fpm/pool.d/${app}.conf" +[[ -f $phpfpm_conf ]] && ynh_die \ +"The PHP FPM configuration already exists at '${phpfpm_conf}'. + You should safely delete it before restoring this app." +phpfpm_ini="/etc/php5/fpm/conf.d/20-${app}.ini" +[[ -f $phpfpm_ini ]] && ynh_die \ +"The PHP FPM INI configuration already exists at '${phpfpm_ini}'. + You should safely delete it before restoring this app." -# Reload Nginx -sudo service nginx reload - -sudo cp -a "${backup_dir}/var/www/$app" $final_path +sudo cp -a ./sources $final_path db_pwd=$(ynh_app_setting_get $app mysqlpwd) db_user=$app ynh_mysql_create_db $db_user $db_user $db_pwd -sudo su -c "mysql -u $db_user -p$db_pwd $app < ${backup_dir}/db.sql" -sudo rm -f "${backup_dir}/db.sql" +sudo su -c "mysql -u $db_user -p$db_pwd $app < ./db.sql" +sudo rm -f "./db.sql" sudo sed -i -e "s/'DB_USER', *'[^']*'/'DB_USER', '$app'/g" $final_path/config/connect.php sudo sed -i -e "s/'DB_NAME', *'[^']*'/'DB_NAME', '$app'/g" $final_path/config/connect.php # Set permissions sudo chown -R www-data: $final_path -# Copy dedicated php-fpm process from backup folder to the right location -sudo cp -a $backup_dir/conf/php-fpm.conf /etc/php5/fpm/pool.d/$app.conf -sudo cp -a $backup_dir/conf/php-fpm.ini /etc/php5/fpm/conf.d/20-$app.ini -# And restart service -sudo service php5-fpm reload +# Restore configuration files +sudo cp -a ./conf/nginx.conf "$nginx_conf" +sudo cp -a ./conf/php-fpm.conf "$phpfpm_conf" +sudo cp -a ./conf/php-fpm.ini "$phpfpm_ini" -# Set ssowat config -if [ "$is_public" = "No" ]; -then - ynh_app_setting_delete $app skipped_uris -fi -sudo yunohost app ssowatconf +# Reload services +sudo service php5-fpm reload || true +sudo service nginx reload || true \ No newline at end of file