Установите фиксированное время между повторными попытками rsync

Я немного подумал и решил, что в основном сохраняю свой способ кодирования
я не знаком с ksh, поэтому мне приходится кодировать в bash
извините, если вам нужно перевести

нужен временный файл
потому что forи whileоба порождают оболочку sub -в конвейерах, поэтому не могут передавать значения массива

вы можете изменить шаблон файла, чтобы mktempпоместить временный файл в каталог, который вам не нужно будет обрабатывать
замените часть эха в цикле while на ваш код

#!/bin/bash

i=0
tmp=`mktemp /tmp/findingXXXXXX`
find "$CDIR" ! -type d -mtime +7 |awk '{print "F_ARR["(NR-1)"]="$0}' >$tmp
. $tmp
rm -f $tmp
while [ "${F_ARR[$i]}" != "" ];
  do
      echo i=$i ${F_ARR[$i]}
      ((i++))

done

0
06.11.2020, 11:30
1 ответ

То, как я это делаю, похоже на это

while :
do
    rsync... && break
    sleep 60
done

Инструмент rsyncзавершает работу со статусом 0 (успех )после успешного завершения, что прерывает цикл. В противном случае следует 60-секундная пауза и повторный запуск цикла. В моей собственной реализации этого я склонен использовать более длительную задержку, а также счетчик для выхода из цикла после kпопыток:

ss=127 k=4
while [[ $((k--)) -gt 0 ]]
do
    rsync... && ss=0 && break
    ss=$?
    [[ $k -gt 0 ]] && sleep 300
done
echo "completion status of last rsync is $ss"

После обновления вашего вопроса вот команда rsync, которую я бы использовал

rsync -rtlzq -e "ssh -i c:/RsyncKeys/wa-ecy-gov-test-rsync-key -o ConnectTimeout=140 -o ServerAliveInterval=15" --exclude-from='rsyncfilter.txt' --force --delete --log-file=c:/rsynclogs/rsync11-05-2020.log cran-rsync@cran.r-project.org: //sdceco/Apps/RSTUDIO/RpackagesNew

Изменения

  • Добавлено ServerAliveInterval=15для транспорта sshдля принудительного отключения после 45 секунд отсутствия ответа сервера
  • Нет-v(--verbose)или --stats, потому что вы отменили их с помощью-q(--quiet)
  • Нет --timeout, так как он управляется sshна транспортном уровне
  • Инструкции по копированию для R предупреждают, что -lможет потребоваться заменить на -Lв файловых системах Windows. Я не внес это изменение здесь, но вы (и будущие читатели )должны знать об этом
  • .
0
18.03.2021, 22:51

Теги

Похожие вопросы