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文件夾,否則在判題時會顯示編譯錯誤,點擊會顯示測試用例不存在。