From 8c796272852e95b49981b0d347c9c47a5333193c Mon Sep 17 00:00:00 2001 From: zamentur Date: Sun, 10 Jan 2016 20:10:16 +0100 Subject: [PATCH] [enh] Add backup/restore scripts --- scripts/backup | 24 +++++++++++++++++ scripts/restore | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 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..979a3d9 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,24 @@ +#!/bin/bash + +# The parameter $1 is the backup directory location dedicated to the app +backup_dir=$1 + +# The parameter $2 is theid of the app instance +app=$2 + +domain=$(sudo yunohost app setting $app domain) +path=$(sudo yunohost app setting $app path) + +# Copy the app files +final_path=/var/www/$app +sudo mkdir -p ${backup_dir}/var/www +sudo cp -a $final_path "${backup_dir}/var/www/$app" + +# 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" +sudo cp -a /etc/cron.d/$app "${backup_dir}/conf/cron" + +# 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" diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..d4fb42d --- /dev/null +++ b/scripts/restore @@ -0,0 +1,68 @@ +#!/bin/bash +# This restore script is adapted to Yunohost >=2.4 + +# The parameter $1 is the backup directory location dedicated to the app +backup_dir=$1 + +# The parameter $2 is the id of the app instance ex: ynhexample__2 +app=$2 + +# Get old parameter of the app +domain=$(sudo yunohost app setting $app domain) +path=$(sudo yunohost app setting $app path) + +# Check domain/path availability +sudo yunohost app checkurl $domain$path -a $app +if [[ ! $? -eq 0 ]]; then + echo "There is already an app on this URL : $domain$path" | sudo tee /dev/stderr + exit 1 +fi + +# Restore sources & data +final_path=/var/www/$app + +if [ -d $final_path ]; then + echo "There is already a directory: $final_path " | sudo tee /dev/stderr + exit 1 +fi +sudo cp -a "${backup_dir}/var/www/$app" $final_path + +# Dependences +sudo apt-get install php5-cli -y + +db_pwd=$(sudo yunohost app setting $app mysqlpwd) +db_user=$app +sudo yunohost app initdb $db_user -p $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 sed -i -e "s/'DB_USER', *\"[^\"]*\"/'DB_USER', \"$app\"/g" $final_path/config.php +sudo sed -i -e "s/'DB_NAME', *\"[^\"]*\"/'DB_NAME', \"$app\"/g" $final_path/config.php + +# Set permissions +sudo chown -R www-data:www-data $final_path +for i in export images upload js +do + sudo chmod -R 777 $final_path/cache/$i +done + +for i in feed-icons lock +do + sudo chmod -R 777 $final_path/$i +done + +# Restore conf files +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 " | sudo tee /dev/stderr + exit 1 +fi +sudo cp -a "${backup_dir}/conf/nginx.conf" $conf +sudo mv "${backup_dir}/conf/cron" /etc/cron.d/$app +sudo chown root /etc/cron.d/$app + +# Reload Nginx +sudo service nginx reload + +# Set ssowat config +sudo yunohost app setting ttrss skipped_uris -v "/public.php,/api" +sudo yunohost app ssowatconf