Files
mirror/dosync.sh
2026-02-28 22:17:51 +09:00

55 lines
1.3 KiB
Bash

#!/bin/bash
TIMENOW=$(date '+%Y-%m-%d_%H:%M:%S');
LOCKFILE="/srv/mirror/scripts/.lock";
WAITLIMIT=30;
LOGFILE="/srv/mirror/logs/current.log"
SYNCLOG="/srv/mirror/logs/master.log"
cleanup() {
echo "Cleaning up...";
rm -f "$LOCKFILE";
exit;
}
trap cleanup INT TERM KILL EXIT
if [ -f $LOCKFILE ]; then
echo "Previous session $(cat $LOCKFILE) exists." | tee -a ${SYNCLOG}
while [ $WAITLIMIT -ne 0 ]; do
echo "Waiting for previous session.. ${WAITLIMIT} tries left.." | tee -a ${SYNCLOG};
sleep 60;
WAITLIMIT=$(($WAITLIMIT-1));
if [ ! -f $LOCKFILE ]; then
break;
fi
done
echo "Sync job at $TIMENOW blocked by previous job $(cat $LOCKFILE)." | tee -a ${SYNCLOG} >(/srv/mirror/scripts/alert.sh $(cat <&0))
exit;
fi
echo $$ > $LOCKFILE;
echo "Starting sync job at $TIMENOW, $$" | tee ${LOGFILE} | tee -a ${SYNCLOG}
{
/srv/mirror/scripts/sync.sh archlinux &
/srv/mirror/scripts/sync.sh debian &
/srv/mirror/scripts/sync.sh rpmfusion &
wait;
# /srv/mirror/scripts/sync.sh ubuntu_cd &
# /srv/mirror/scripts/sync.sh ubuntu_cd_old &
# /srv/mirror/scripts/sync.sh debian_cd &
# wait;
# /srv/mirror/scripts/sync.sh linux &
# wait;
} 2>&1 | tee -a ${LOGFILE} | tee -a ${SYNCLOG}
wait;
echo Finished sync job $$ $TIMENOW at $(date '+%Y-%m-%d_%H:%M:%S') | tee -a ${LOGFILE} | tee -a ${SYNCLOG}
rm $LOCKFILE;