[mdk-re] Rync over dial
Aleksandr Blohin
sass на uustoll.ee
Вт Фев 19 00:19:12 MSK 2002
Сорри!
Файло забыл :)
--
Best regards
AB
--
... In nomine Altli, et Ctrli, et Spititus Deli, Reset!
----------- следущая часть -----------
#!/usr/bin/perl
=head1 Изменения
Под лицензией GPL v.2
13.08.2001 Версия 2.03
Изменено:
1. небольшие недочеты в тексте
2. Добавлен параметр -q (убирает много ненужной информации)
27.05.2001. Версия 2.02
Изменено:
1. изменен режим вывода на экран
31.03.2001. Версия 2.01
Исправлено:
1. баг с выходом из программы getrsync
2. баг запуска rsync и проверки прерывания программы rsync.
29.03.2001. Версия 2.00b
Изменены оформление и режим запуска rsync.
4.03.2001. Версия 1.00
=cut
#Общее число попыток (0 - неограничено)
$MAX_TRIES=20;
#Число повторов скачивания одного и того же файла
$MAX_1_TRIES=5;
#Текущая попытка
$cur_try=0;
$cur_1_try=1;
#Сайт для скачивания - пример
$DownSite="www.altlinux.ru/MandrakeRE/Spring2001";
#Каталог для скачивания - пример
$DownDir="/var/ftp/pub/Sisyphus";
#Специальные флаги - НЕ ТРОГАТЬ
$RETVAL=1;
$WHOHANG=1;
$|=1;
$QUIET=0;
if (defined (@ARGV))
{
if ($ARGV[0] eq '-q')
{
shift @ARGV;
$QUIET=1;
}
$DownSite=$ARGV[0];
if (defined ($ARGV[1]))
{
$DownDir=$ARGV[1];
print $DownDir,"\n";
if (defined $ARGV[2])
{
$MAX_TRIES=$ARGV[2];
if (defined $ARGV[3])
{
$MAX_1_TRIES=$ARGV[3];
}
}
}
else
{
print "Недостаточно параметров - нет каталога!\n";
exit;
}
}
else
{
print "Программа скачивания через rsync с несколькими попытками и повторами.\n";
print "Написана Епифановым Сергеем, МИФИ. Версия 2.02 от 13.08.2001\n\n";
print "Запуск:\n";
print " getrsync - помощь\n";
print " getrsync [-q] сайт каталог_сохранения [число_попыток [число_повторов]]\n";
print " -q - уменьшить вывод текста\n\n";
print " Пример:\n";
print " getrsync www.altlinux.ru/MandrakeRE/Spring2001 /var/ftp/pub/Sisyphus\n\n";
exit;
}
unless ($QUIET)
{
print "Программа скачивания через rsync с несколькими попытками и повторами.\n";
print "Написана Епифановым Сергеем, МИФИ. Версия 2.01 от 31.03.2001\n\n";
}
#Основной цикл скачивания
$DownSite="rsync://" . $DownSite;
while ($RETVAL)
{
#Проверка числа попыток
$cur_try++;
if ($cur_try>$MAX_TRIES && $MAX_TRIES>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="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
if ($QUIET)
{
$pid=open (OUTINFO,"rsync -av --partial --timeout=500 --delete-after '${DownSite}' '${DownDir}' |");
}
else
{
$pid=open (OUTINFO,"rsync -avP --timeout=500 --delete-after '${DownSite}' '${DownDir}' |");
}
if ($pid<1)
{
$NewMGS=$OldMSG;
goto skip;
}
while ($line=<OUTINFO>)
{
$NewMSG=$line;
print $line;
}
$res=waitpid ($pid,0);
$ExitStatus=$?;
close (OUTINFO);
if (!$ExitStatus)
{
print "Все скачано!\n";
exit;
}
skip:
if ($NewMSG eq $OldMSG)
{
$cur_try-- if $cur_1_try==1;
$cur_1_try++;
if ($cur_1_try>$MAX_1_TRIES)
{
print "Исчерпан лимит повторов ($MAX_1_TRIES)\n";
exit;
}
}
else
{
$cur_1_try=1;
}
}
----------- следущая часть -----------
#!/bin/sh
./getrsync -q www.altlinux.ru/ALTLinux/Sisyphus/ /var/ftp/pub/Sisyphus
./getrsync -q www.altlinux.ru/MandrakeRE/Spring2001/ /var/ftp/pub/Spring2001
./getrsync -q www.altlinux.ru/ALTLinux/updates/ /var/ftp/pub/updates
#./getrsync www.altlinux.ru/MandrakeRE/updates/ /var/ftp/pub/updates
./getrsync -q www.altlinux.ru/ALTLinux/Daedalus/ /var/ftp/pub/Daedalus
./getrsync -q www.altlinux.ru/ALTLinux/Castle/ /var/ftp/pub/Castle
./getrsync -q www.altlinux.ru/ALTLinux/ISO/ /var/ftp/pub/ISO
./getrsync -q www.altlinux.ru/ALTLinux/Junior-1.1/ /var/ftp/pub/Junior-1.1
----------- следущая часть -----------
#!/bin/bash
cd /home/pif/work
./uprsync
Подробная информация о списке рассылки Community