Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import/ Export cleanup #70

Merged
merged 9 commits into from
Nov 16, 2023
Merged
14 changes: 7 additions & 7 deletions emoncms-export.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
#!/bin/bash
script_location="`dirname $0`"
script_location="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
config_location=${script_location}/config.cfg

date=$(date +"%Y-%m-%d")

echo "=== Emoncms export start ==="
date
echo "Backup module version:"
cat $script_location/backup-module/module.json | grep version
grep version ${script_location}/module.json
echo "EUID: $EUID"
echo "Reading $script_location/config.cfg...."
if [ -f "$script_location/config.cfg" ]
echo "Reading ${config_location}...."
if [ -f "${config_location}" ]
then
source "$script_location/config.cfg"
source "${config_location}"
echo "Location of databases: $database_path"
echo "Location of emonhub.conf: $emonhub_config_path"
echo "Location of Emoncms: $emoncms_location"
echo "Backup destination: $backup_location"
else
echo "ERROR: Backup $script_location/backup/config.cfg file does not exist"
echo "ERROR: Backup config file ${config_location} does not exist"
exit 1
sudo systemctl start feedwriter > /dev/null
fi

module_location="${emoncms_location}/Modules/backup"
Expand Down
79 changes: 44 additions & 35 deletions emoncms-import.sh
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
#!/bin/bash

script_location="`dirname $0`"
script_location="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
config_location=${script_location}/config.cfg

echo "=== Emoncms import start ==="
date +"%Y-%m-%d-%T"
echo "Backup module version:"
cat $script_location/backup/module.json | grep version
grep version "${script_location}/module.json"
echo "EUID: $EUID"
echo "Reading $script_location/config.cfg...."
if [ -f "$script_location/config.cfg" ]
echo "Reading ${config_location}...."
if [ -f "${config_location}" ]
then
source "$script_location/config.cfg"
source "${config_location}"
echo "Location of data databases: $database_path"
echo "Location of emonhub.conf: $emonhub_config_path"
echo "Location of Emoncms: $emoncms_location"
echo "Backup destination: $backup_location"
echo "Backup source path: $backup_source_path"
else
echo "ERROR: Backup $script_location/backup/config.cfg file does not exist"
echo "ERROR: Backup config file ${config_location} does not exist"
exit 1
fi

Expand Down Expand Up @@ -52,24 +53,24 @@ fi


# Get latest backup filename
if [ ! -d $backup_source_path ]; then
echo "Error: $backup_source_path does not exist, nothing to import"
if [ ! -d "${backup_source_path}" ]; then
echo "Error: ${backup_source_path} does not exist, nothing to import"
exit 1
fi

backup_filename=$((cd $backup_source_path && ls -t *.tar.gz) | head -1)
if [[ -z "$backup_filename" ]] #if backup does not exist (empty filename string)
backup_filename=$(ls -t "${backup_source_path}"/*.tar.gz | head -1)
if [[ -z "${backup_filename}" ]] #if backup does not exist (empty filename string)
then
echo "Error: cannot find backup, stopping import"
exit 1
fi

# if backup exists
echo "Backup found: $backup_filename starting import.."
echo "Backup found: ${backup_filename} starting import.."

echo "Read MYSQL authentication details from settings.php"
if [ -f $script_location/get_emoncms_mysql_auth.php ]; then
auth=$(echo $emoncms_location | php $script_location/get_emoncms_mysql_auth.php php)
if [ -f "${script_location}/get_emoncms_mysql_auth.php" ]; then
auth=$(echo "${emoncms_location}" | php "${script_location}/get_emoncms_mysql_auth.php" php)
IFS=":" read username password database <<< "$auth"
else
echo "Error: cannot read MYSQL authentication details from Emoncms settings.php"
Expand All @@ -79,27 +80,31 @@ fi


echo "Decompressing backup.."
if [ ! -d $backup_location/import ]; then
mkdir $backup_location/import
sudo chown $user $backup_location/import -R
import_location="${backup_location}/import"
if [ -d "${import_location}" ]; then
sudo rm -rf "${import_location}"
# Belt and braces cleanup in case any '.' prefixed files exist
fi

tar xfzv $backup_source_path/$backup_filename -C $backup_location/import 2>&1
mkdir "${import_location}"
sudo chown "${user}" "${import_location}"

tar xfzv "${backup_filename}" -C "${import_location}" 2>&1
if [ $? -ne 0 ]; then
echo "Error: failed to decompress backup"
echo "$backup_source_path/$backup_filename has not been removed for diagnotics"
echo "Removing files in $backup_location/import"
sudo rm -Rf $backup_location/import/*
echo "${backup_filename} has not been removed for diagnotics"
echo "Removing files in ${import_location}"
sudo rm -Rf "${import_location}/*"
echo "Import failed"
exit 1
fi

echo "Removing compressed backup to save disk space.."
sudo rm $backup_source_path/$backup_filename
sudo rm "${backup_filename}"

if [ -n "$password" ]
then # if username sring is not empty
if [ -f $backup_location/import/emoncms.sql ]; then
if [ -f "${import_location}/emoncms.sql" ]; then
echo "Stopping services.."
if [[ $emonhub == "loaded" ]]; then
sudo systemctl stop emonhub
Expand All @@ -114,7 +119,7 @@ then # if username sring is not empty
sudo systemctl stop emoncms_mqtt
fi
echo "Emoncms MYSQL database import..."
mysql -u$username -p$password $database < $backup_location/import/emoncms.sql
mysql -u"${username}" -p"${password}" "${database}" < "${import_location}/emoncms.sql"
if [ $? -ne 0 ]; then
echo "Error: failed to import mysql data"
echo "Import failed"
Expand All @@ -130,27 +135,31 @@ else
fi

echo "Import feed meta data.."
sudo rm -rf $database_path/{phpfina,phptimeseries} 2> /dev/null
sudo rm -rf "${database_path}"/{phpfina,phptimeseries} 2> /dev/null

echo "Restore phpfina and phptimeseries data folders..."
if [ -d $backup_location/import/phpfina ]; then
sudo mv $backup_location/import/phpfina $database_path
sudo chown -R www-data:root $database_path/phpfina
if [ -d "${import_location}/phpfina" ]; then
sudo mv "${import_location}/phpfina" "${database_path}"
sudo chown -R www-data:root "${database_path}/phpfina"
fi

if [ -d $backup_location/import/phptimeseries ]; then
sudo mv $backup_location/import/phptimeseries $database_path
sudo chown -R www-data:root $database_path/phptimeseries
if [ -d "${import_location}/phptimeseries" ]; then
sudo mv "${import_location}/phptimeseries" "${database_path}"
sudo chown -R www-data:root "${database_path}/phptimeseries"
fi

# cleanup
sudo rm $backup_location/import/emoncms.sql
sudo rm "${import_location}/emoncms.sql"

# Save previous config settings as old.emonhub.conf
if [ -f $backup_location/import/emonhub.conf ]; then
echo "Import emonhub.conf > $emonhub_config_path/emohub.conf"
sudo mv $backup_location/import/emonhub.conf $emonhub_config_path/emonhub.conf
sudo chmod 666 $emonhub_config_path/emonhub.conf
if [ -f "${import_location}/emonhub.conf" ]; then
if [ -d "${emonhub_config_path}" ]; then
echo "Import emonhub.conf > ${emonhub_config_path}/emohub.conf"
sudo mv "${import_location}/emonhub.conf" "${emonhub_config_path}/emonhub.conf"
sudo chmod 666 "${emonhub_config_path}/emonhub.conf"
else
echo "WARNING: emonhub.conf found in backup, but no emonHub directory (${emonhub_config_path}) found"
fi
fi

# Start with blank emonhub.conf
Expand Down
1 change: 1 addition & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Install this module in /opt/emoncms/modules:

Run backup module installation script to modify php.ini and setup uploads folder:

cd backup
./install.sh

## Manual Export Instructions
Expand Down
11 changes: 6 additions & 5 deletions usb-import.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
#!/bin/bash

script_location="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
config_location=${script_location}/config.cfg

echo "=== USB Emoncms import start ==="
date +"%Y-%m-%d-%T"
echo "Backup module version:"
cat $script_location/backup-module/module.json | grep version
grep version ${script_location}/module.json
echo "EUID: $EUID"
echo "Reading $script_location/config.cfg...."
if [ -f "$script_location/config.cfg" ]
echo "Reading ${config_location}...."
if [ -f "${config_location}" ]
then
source "$script_location/config.cfg"
source "${config_location}"
echo "Location of data databases: $database_path"
echo "Location of emonhub.conf: $emonhub_config_path"
echo "Location of Emoncms: $emoncms_location"
else
echo "ERROR: Backup $script_location/backup/config.cfg file does not exist"
echo "ERROR: Backup config file ${config_location} does not exist"
exit 1
fi

Expand Down