opt-cc/backup/backup.sh

45 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# execute script in its location folder
cd $(dirname $0)
# array of available collection names
col=(app_user awarding campaign decoration logBudget logFlag logKill logPlayerCount logPoints logRespawn logRevive logServerFps logTransport logVehicle player promotion rank squad user war)
if [ -z "$1" ]
then
DATE=$(date '+%Y-%m-%d')
mkdir -p ${DATE}/resource
cp -R ../server/resource/ ${DATE}/
else
DATE=${1}
tar -xzf ${DATE}.tar.gz
rm -rf ../server/resource
cp -Rv ${DATE}/resource ../server/
fi
for i in "${col[@]}"
do
# provide date for restore process, if data import is needed
if [ -z "$1" ]
then
(>&2 echo -e "$(date "+%Y-%m-%dT%T.%3N%z")\tTable: ${i}")
mongoexport --db cc --collection $i --out ${DATE}/collections/${i}.json;
else
mongoimport --db cc --collection $i --drop --file ${1}/collections/${i}.json
fi
done
if [ $(ls -lt --hide=backup.sh | wc -l) -gt 14 ]; then
$(rm "$(ls -t --hide=backup.sh | tail -1)")
fi
if [ -z "$1" ]
then
tar -zcf ${DATE}.tar.gz ${DATE}
rm -rf ${DATE}
elif [[ $1 =~ ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$ ]]
then
rm -rf ${DATE}
fi