青島大學開源 Online Judge 數據備份和恢復

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的錯誤,在官網羣裏詢問之後發現是文檔沒寫清楚。

請先恢復數據庫再拷貝備份的publictest_case文件夾,否則在判題時會顯示編譯錯誤,點擊會顯示測試用例不存在。

3.參考

OnlineJudge文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章