[mdk-re] Fwd: Скрипт к rsync,версия 2

Sergei =?iso-8859-1?q?serpiph_=CE=C1_pochtamt=2Eru?=
Чт Мар 29 22:21:14 MSD 2001


Хочу предложить новую версию скрипта для rsync. Думаю, запустив скрипт, будет
все ясно.

-- 
С уважением, Епифанов Сергей
----------- следующая часть -----------
#!/usr/bin/perl

#Общее число попыток (0 - неограничено)
$MAX_TRIES=20;
#Число повторов скачивания одного и того же файла
$MAX_1_TRIES=5;
#Текущая попытка
$cur_try=0;
$cur_1_try=1;
#Сайт для скачивания
$DownSite="rsync://ftp.altlinux.ru/MandrakeRE/Spring2001";
#Каталог для скачивания
$DownDir="/var/ftp/pub/Sisyphus";

#Специальные флаги - НЕ ТРОГАТЬ
$RETVAL=1;
$WHOHANG=1;

#Пользуйтесь как хотите

print "Программа скачивания через rsync с несколькими попытками и повторами.\n";
print "Написана 29.03.2001 Епифановым Сергеем, МИФИ.\n";
print "Запуск:\n";
print "     getRE сайт каталог_сохранения [число_попыток [число_повторов]]\n\n";
if (defined (@ARGV))
{
    $DownSite=$ARGV[0];
    if (defined ($ARGV[1]))
    {
	$DownDir=$ARGV[1];	
        if (defined $ARGV[2])
	{
	    $MAX_TRIES=$ARGV[2];
	    if (defined $ARGV[3])
	    {
		$MAX_1_TRIES=$ARGV[3];
	    }
	}
    }
    else
    {
        print "Недостаточно параметров - нет каталога!\n";
        exit;
    }
}
else
{
    exit;
}
#Основной цикл скачивания

while ($RETVAL)
{
#Проверка числа попыток
	$cur_try++;
	if ($cur_try>$MAX_TRIES && $MAXTRIES>0)
	{
	    print "Не хватает попыток ($MAX_TRIES) для полного скачивания, выхожу.\n";
	    exit;
	}
	print "Попытка номер $cur_try\n" if $cur_1_try==1;
	print "Повтор $cur_1_try попытки $cur_try\n" if $cur_1_try>1;
#Запуск скачивания
	$OldMSG=$NewMSG;
	$NewMSG="";
	$pid=open (OUTINFO,"rsync -avP --timeout=500 --delete-after '${DownSite}' '${DownDir}' |");
	while ($line=<UTINFO>)
	{
	    $NewMSG.=$line;
	    print $line;
	}
	if ($NewMSG eq $OldMSG)
	{
	    $cur_try--;
	    $cur_1_try++;
	    if ($cur_1_try>$MAX_1_TRIES)
	    {
		print "Исчерпан лимит повторов ($MAX_1_TRIES)\n";
		exit;
	    }
	}
	else
	{
	    $cur_1_try=1;
	}
}


Подробная информация о списке рассылки community