1.备份
网页数据在/data/backend/public中,测试用例的数据在 /data/backend/test_case 中,直接复制粘贴就行。
数据库的备份不能直接复制粘贴,请使用 /backup 目录中的 db_backup.sh 脚本。
可能会出现权限不足的问题
-bash: ./db_backup.sh: Permission denied
使用chmod u+x db_backup.sh
为所有者添加可执行权限(前提当前登录的用户是这个文件的所有者),要不就使用root用户登录更改权限或使用ls -l
查看文件的所有者,再使用那个账号添加可执行权限。
2.恢复
2.1停止其它容器的运行
使用docker ps -a
查看每个容器的ID,使用docker stop ID
分别停止name为 oj-backend、oj-redis 和 judge-server的容器。
如果除了OnlineJudge外没有别的docker容器在运行的话,可以使用docker stop $(docker ps -aq)
停止所有容器,再使用docker start ID
运行name为oj-postgres的容器。
2.2恢复数据库
输入以下命令恢复数据库
docker cp db_backup_xxxxxxx.sql oj-postgres:/root
docker exec -it oj-postgres bash
psql -U onlinejudge postgres
drop database onlinejudge;
\q
psql -f /root/db_backup_xxxxxxx.sql -U onlinejudge postgres
官方文档中是psql -U postgres
,但会出现psql: FATAL: role "postgres" does not exist
的错误,在官网群里询问之后发现是文档没写清楚。
请先恢复数据库再拷贝备份的public和test_case文件夹,否则在判题时会显示编译错误,点击会显示测试用例不存在。