From: Sergei <serpiph@pochtamt.ru> To: mandrake-russian@altlinux.ru Subject: [mdk-re] Скрипт закачки через rsync Date: Sat Aug 18 17:36:11 2001 Message-ID: <01081817493901.08574@pif.b5.mephi.ru> (raw) [-- Attachment #1: Type: text/plain, Size: 126 bytes --] Немного обновил скрипт закачки через rsync. Если есть какие замечания, пишите прямо мне. -- С уважением, Епифанов Сергей. [-- Attachment #2: getrsync --] [-- Type: application/x-perl, Size: 3189 bytes --] #!/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; } }
reply other threads:[~2001-08-18 17:36 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=01081817493901.08574@pif.b5.mephi.ru \ --to=serpiph@pochtamt.ru \ --cc=mandrake-russian@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git