Ein für Shopware 6 vorbereitet Systemmanagment.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

75 lines
3.0 KiB

#!/bin/bash
### DO NOT EDIT THIS FILE
db_included=true
function dbValidate {
if ([ "$db_local_stage_user" == "" ] && [ "$db_local_live_user" == "" ])
then
echo >&2
echoError "Please configure $project_manager_dir/data/$customer/$project/etc/plugins/db/config" >&2
echo >&2
exit
fi
if [ "$ssh_included" == "" ]
then
echo >&2
echoError "Plugin \"ssh\" has to be included" >&2
echo >&2
exit
fi
}
function dbGetConfig {
local env=$(getArgument "$1" "Usage dbGetConfig [live|stage|local_live|local_stage] var" "live stage local_live local_stage")
local suffix=$(getArgument "$2" "Usage dbGetConfig [live|stage|local_live|local_stage] var" true)
echo "$(eval "echo \"\$db_${env}_$suffix\"")"
}
function dbDump {
local env=$(getArgument "$1" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
local name=$(getArgument "$2" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
local parameters=$(getArgument "$3" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]")
local database=$(getArgument "$4" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
local tables=$(getArgument "$5" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]")
local currentDate=$(date '+%Y-%m-%d_%H:%M:%S')
local is_remote="$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi)"
if [ "$is_remote" == 1 ]
then
local ssh_user="$(sshGetConfig "$env" "user")"
local ssh_domain="$(sshGetConfig "$env" "domain")"
sshAddKey "$env"
scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf"
ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/$env.my.cnf --no-tablespaces ${parameters[*]} $database $tables | \
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_$name.sql.gz"
scp "$ssh_user"@"$ssh_domain":"~/${env}_$name.sql.gz" "$app_dir/var/tmp/$currentDate-${env}_$name.sql.gz"
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_$name.sql.gz"
gunzip "$app_dir/var/tmp/$currentDate-${env}_$name.sql.gz"
else
mysqldump --defaults-extra-file="$app_dir/etc/${env}.my.cnf" --no-tablespaces ${parameters[*]} $database $tables | \
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' \
> "$app_dir/var/tmp/${currentDate}-${env}_$name.sql"
fi
if [[ "$(tail -n 2 "$app_dir/var/tmp/$currentDate-${env}_$name.sql" )" != *"-- Dump completed"* ]]
then
rm "$app_dir/var/tmp/$currentDate-${env}_$name.sql"
echo
echoError "File was corrupted, deleting"
echo
exit
fi
gzip -c "$app_dir/var/tmp/${currentDate}-${env}_$name.sql.gz" > "$app_dir/backup/database/${currentDate}-${env}_$name.sql.gz"
rm "$app_dir/var/tmp/$currentDate-${env}_$name.sql"
echo "$app_dir/backup/database/$currentDate-${env}_$name.sql.gz"
}