[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