增加rsync同步功能

This commit is contained in:
spxcds 2016-05-11 13:01:04 +08:00
parent f19aa20817
commit e4648cf47d
7 changed files with 57 additions and 0 deletions

1
.gitignore vendored
View File

@ -67,3 +67,4 @@ upload/
custom_settings.py custom_settings.py
docker-compose.yml docker-compose.yml
*.zip *.zip
rsyncd.passwd

View 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

View 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}

View 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

View File

@ -0,0 +1 @@
YOUR_PASSWORD

View 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

View 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