[sisyphus] Re: Зеркало Сизифа
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Чт Мар 18 22:45:34 MSK 2004
On Mon, Mar 15, 2004 at 01:38:38PM +0600, Andrew Kochetkov wrote:
> Сделал себе зеркало Сизифа (окромя SRPMS). Интересует такая
> штука: какой приблизительно траффик создаст поддержание
> зеркала? Обновления хочу сделать ежедневные.
Кстати, мож еще кому аттач пригодится.
Делает ежедневные снапшоты на хардлинках. При этом:
home:/var/ftp/pub/EMT/Sisyphus> l
total 40
drwxrwsr-x 17 mike mike 4096 Mar 8 01:55 20040305
drwxrwsr-x 17 mike mike 4096 Mar 8 00:00 20040307
drwxrwsr-x 17 mike mike 4096 Mar 9 00:00 20040308
drwxrwsr-x 17 mike mike 4096 Mar 10 00:00 20040309
drwxrwsr-x 17 mike mike 4096 Mar 11 00:00 20040310
drwxrwsr-x 17 mike mike 4096 Mar 12 00:00 20040311
drwxrwsr-x 17 mike mike 4096 Mar 13 00:00 20040312
drwxrwsr-x 17 mike mike 4096 Mar 17 00:00 20040316
drwxrwsr-x 17 mike mike 4096 Mar 18 00:00 20040317
lrwxrwxrwx 1 mike mike 8 Mar 18 19:39 current -> 20040317
drwxr-xr-x 2 mike mike 4096 Mar 18 19:36 log
home:/var/ftp/pub/EMT/Sisyphus> du -sh
11G .
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#!/bin/sh
# script by Michael Shigorin <mike на osdn.org.ua> for snapshotting
# ALT Linux Sisyphus locally; feel free to use and modify, would
# be glad to hear back about changes
# mirror/site-specific
SRC="ftp.altlinux.org.ua::ALTLinux/Sisyphus/"
BASEDIR="/var/ftp/pub/EMT/Sisyphus/"
# retry params
MAXCOUNT=5
TIMEOUT=60
# shouldn't need to be changed
DATE=`date +%Y%m%d`
LOGDIR="$BASEDIR/log/"
LOGFILE="$LOGDIR/$DATE.log"
DEST="$BASEDIR/.syncing/"
RSYNCARGS="-av --partial --delete"
RPMARGS="-qp --queryformat %{RELEASE}"
TAGFILE="$DEST/files/i586/RPMS/altlinux-release-Sisyphus-alt*.noarch.rpm"
unset OK
# init env
mkdir -p "$BASEDIR" "$LOGDIR"
cd "$BASEDIR"
# create hardlinked copy or init dir; order critical
LAST=`ls -d1 20?????? 2>/dev/null | tail -1`
rm -rf "$DEST"
[ -n "$LAST" ] && cp -al "$LAST" "$DEST" || mkdir -p "$DEST"
# try to sync up
for attempt in `seq 1 $MAXCOUNT`; do
rsync $RSYNCARGS "$SRC" "$DEST" 2>&1 >> "$LOGFILE" && {
OK="yes"
break
}
sleep "$TIMEOUT"
done
[ -z "$OK" ] && exit 1
# get timestamp from specific package and move to it
TIMESTAMP=`rpm $RPMARGS $TAGFILE | sed 's/alt//'`
[ ! -d "$TIMESTAMP" ] && {
mv "$DEST" "$TIMESTAMP"
touch -d "$DATE" "$TIMESTAMP"
# fix symlink
rm -f current
ln -s "$TIMESTAMP" current
} || rm -rf "$DEST"
# that's all :)
echo "** $TIMESTAMP sync OK" >> "$LOGFILE"
Подробная информация о списке рассылки Sisyphus