mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-12-29 00:22:03 +00:00
增加rsync同步功能
This commit is contained in:
parent
f19aa20817
commit
e4648cf47d
1
.gitignore
vendored
1
.gitignore
vendored
@ -67,3 +67,4 @@ upload/
|
||||
custom_settings.py
|
||||
docker-compose.yml
|
||||
*.zip
|
||||
rsyncd.passwd
|
3
dockerfiles/test_case_rsync/Dockerfile
Normal file
3
dockerfiles/test_case_rsync/Dockerfile
Normal file
@ -0,0 +1,3 @@
|
||||
FROM ubuntu:14.04
|
||||
RUN apt-get update && apt-get -y install rsync
|
||||
CMD /bin/bash /OnlineJudge/dockerfiles/test_case_rsync/run.sh
|
19
dockerfiles/test_case_rsync/docker-compose.example.yml
Normal file
19
dockerfiles/test_case_rsync/docker-compose.example.yml
Normal file
@ -0,0 +1,19 @@
|
||||
oj_rsync_master:
|
||||
image: oj_rsync
|
||||
volumes:
|
||||
- /home/OnlineJudge:/OnlineJudge
|
||||
- /home/test_case:/OnlineJudge/test_case
|
||||
- /home/log:/OnlineJudge/log
|
||||
ports:
|
||||
- "0.0.0.0:873:873"
|
||||
environment:
|
||||
- RSYNC_MODE=master
|
||||
oj_rsync_slave:
|
||||
image: oj_rsync
|
||||
volumes:
|
||||
- /home/OnlineJudge:/OnlineJudge
|
||||
- /home/test_case:/OnlineJudge/test_case
|
||||
- /home/log:/OnlineJudge/log
|
||||
environment:
|
||||
- RSYNC_MODE=slave
|
||||
- RSYNC_MASTER_ADDR={YOUR_MASTER_ADDR}
|
11
dockerfiles/test_case_rsync/rsyncd.conf
Normal file
11
dockerfiles/test_case_rsync/rsyncd.conf
Normal file
@ -0,0 +1,11 @@
|
||||
port = 873
|
||||
uid = root
|
||||
gid = root
|
||||
use chroot = yes
|
||||
read only = yes
|
||||
log file = /OnlineJudge/log/rsyncd.log
|
||||
[testcase]
|
||||
path = /OnlineJudge/test_case/
|
||||
list = yes
|
||||
auth users = ojrsync
|
||||
secrets file = /etc/rsyncd/rsyncd.passwd
|
1
dockerfiles/test_case_rsync/rsyncd.example.passwd
Normal file
1
dockerfiles/test_case_rsync/rsyncd.example.passwd
Normal file
@ -0,0 +1 @@
|
||||
YOUR_PASSWORD
|
6
dockerfiles/test_case_rsync/rsyncd_slave.sh
Normal file
6
dockerfiles/test_case_rsync/rsyncd_slave.sh
Normal file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
while true
|
||||
do
|
||||
rsync -avz --delete --progress --password-file=/OnlineJudge/dockerfiles/test_case_rsync/rsyncd.passwd ojrsync@$RSYNC_MASTER_ADDR::testcase /OnlineJudge/test_case >> /OnlineJudge/log/rsync_slave.log
|
||||
sleep 5
|
||||
done
|
16
dockerfiles/test_case_rsync/run.sh
Normal file
16
dockerfiles/test_case_rsync/run.sh
Normal file
@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
if [ "$RSYNC_MODE" = "master" ]; then
|
||||
if [ ! -f "/etc/rsyncd/rsync_master.passwd" ]; then
|
||||
mkdir /etc/rsyncd
|
||||
(echo "ojrsync:" && cat /OnlineJudge/dockerfiles/test_case_rsync/rsyncd.passwd) | tr -d "\n" > /etc/rsyncd/rsyncd.passwd
|
||||
fi
|
||||
chmod 600 /etc/rsyncd/rsyncd.passwd
|
||||
rsync --daemon --config=/OnlineJudge/dockerfiles/test_case_rsync/rsyncd.conf
|
||||
else
|
||||
chmod 600 /OnlineJudge/dockerfiles/test_case_rsync/rsyncd.passwd
|
||||
/bin/bash /OnlineJudge/dockerfiles/test_case_rsync/rsyncd_slave.sh
|
||||
fi
|
||||
while true
|
||||
do
|
||||
sleep 100
|
||||
done
|
Loading…
Reference in New Issue
Block a user