98 lines
3.1 KiB
Bash
Executable File
98 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
|
|
if lsb_release -a|grep Ubuntu ; then
|
|
echo "This script is designed for CentOS"
|
|
echo "Ubuntu use restore.sh instead, please."
|
|
exit 1
|
|
fi
|
|
|
|
# Get backup archive file
|
|
if [ ${#} -gt 0 ];then
|
|
archive=${1};
|
|
else
|
|
archive=`ls -r /home/judge/backup | head -1`;
|
|
fi
|
|
|
|
echo "restore archive ${archive}"
|
|
|
|
# Get database password
|
|
OJ_USERNAME=`cat /home/judge/etc/judge.conf | grep OJ_USER_NAME`
|
|
OJ_PASSWORD=`cat /home/judge/etc/judge.conf | grep OJ_PASSWORD`
|
|
DB_USERNAME=`echo ${OJ_USERNAME:13}`
|
|
DB_PASSWORD=`echo ${OJ_PASSWORD:12}`
|
|
|
|
|
|
# create temp directory
|
|
mkdir /home/judge/backup/temp
|
|
|
|
# save database config if interrupted
|
|
touch /home/judge/backup/temp/db.conf
|
|
echo DB_USERNAME=${DB_USERNAME} >> /home/judge/backup/temp/db.conf
|
|
echo DB_PASSWORD=${DB_PASSWORD} >> /home/judge/backup/temp/db.conf
|
|
|
|
# clear old files
|
|
rm -rf /home/judge/data
|
|
rm -rf /home/judge/etc
|
|
rm -rf /home/judge/src/web
|
|
|
|
# start restore
|
|
tar -xf /home/judge/backup/${archive} -C /home/judge/backup/temp
|
|
|
|
# restore database
|
|
echo "restore database"
|
|
mysql -u${DB_USERNAME} -p${DB_PASSWORD} < /home/judge/backup/temp/jol.sql
|
|
|
|
# restore data directory
|
|
echo "restore data directory"
|
|
cp -r /home/judge/backup/temp/data /home/judge/data
|
|
|
|
# restore config files
|
|
echo "restore config files"
|
|
cp -r /home/judge/backup/temp/etc /home/judge/etc
|
|
|
|
# restore web files
|
|
cp -r /home/judge/backup/temp/src/web /home/judge/src/web
|
|
|
|
# adjustment judge config file
|
|
echo "adjustment judge config file"
|
|
CPU=`cat /proc/cpuinfo| grep "processor"| wc -l`
|
|
cdbusername=`cat /home/judge/etc/judge.conf | grep OJ_USER_NAME`
|
|
cdbpassword=`cat /home/judge/etc/judge.conf | grep OJ_PASSWORD`
|
|
ccpu=`cat /home/judge/etc/judge.conf | grep OJ_RUNNING`
|
|
sed -i "s/${cdbusername}/OJ_USER_NAME=${DB_USERNAME}/g" /home/judge/etc/judge.conf
|
|
sed -i "s/${cdbpassword}/OJ_PASSWORD=${DB_PASSWORD}/g" /home/judge/etc/judge.conf
|
|
sed -i "s/${ccpu}/OJ_RUNNING=${CPU}/g" /home/judge/etc/judge.conf
|
|
|
|
# adjustment web config file
|
|
echo "adjustment web config file"
|
|
cdbuser=`cat /home/judge/src/web/include/db_info.inc.php | grep static |grep DB_USER`
|
|
cdbpass=`cat /home/judge/src/web/include/db_info.inc.php | grep static |grep DB_PASS`
|
|
sed -i "s|${cdbuser}|static\ \ \$DB_USER=\"${DB_USERNAME}\";|g" /home/judge/src/web/include/db_info.inc.php
|
|
sed -i "s|${cdbpass}|static\ \ \$DB_PASS=\"${DB_PASSWORD}\";|g" /home/judge/src/web/include/db_info.inc.php
|
|
|
|
chmod 775 -R /home/judge/data
|
|
chmod 700 /home/judge/etc/judge.conf
|
|
chmod 700 /home/judge/src/web/include/db_info.inc.php
|
|
|
|
centos7=`cat /etc/os-release | grep PRETTY_NAME | grep CentOS | grep 7 `
|
|
ubuntu14=`cat /etc/os-release | grep PRETTY_NAME | grep Ubuntu | grep 14`
|
|
ubuntu16=`cat /etc/os-release | grep PRETTY_NAME | grep Ubuntu | grep 16`
|
|
ubuntu18=`cat /etc/os-release | grep PRETTY_NAME | grep Ubuntu | grep 18`
|
|
|
|
if [ -n "${centos7}" ];then
|
|
own=apache;
|
|
elif [ -n "${ubuntu14}" ];then
|
|
own=judge;
|
|
elif [ -n "${ubuntu16}" ];then
|
|
own=www-data;
|
|
elif [ -n "${ubuntu18}" ];then
|
|
own=www-data;
|
|
fi
|
|
|
|
chown -R ${own}:${own} /home/judge/data
|
|
chown ${own} /home/judge/src/web/include/db_info.inc.php
|
|
chown ${own} /home/judge/src/web/upload
|
|
|
|
# clear temp directory
|
|
rm -rf /home/judge/backup/temp
|