rsyn c: удаленная синхронизация c время создания файла (стало до 1970 г.) отличается от времени создания локального файла - PullRequest
0 голосов
/ 04 августа 2020

Я использовал RSYN C для загрузки папки с локального хоста на удаленный хост. CRONTAB установил для него запланированное задание. И при загрузке произошла ошибка: передача файла (в папке) не удалась, и время его создания стало 1970/01/01 (заведомо неверное). Кроме того, время создания папки (на удаленном хосте) отличается от времени создания локальной папки (на локальном хосте). Первый на несколько минут позже, чем второй. Вот мой код (который crontab настроил как запланированное задание):

time=$(date "+%Y-%m-%d")
echo $time
count_tmp=0
while [ $count_tmp -le 4 ]
do

/usr/bin/expect <<-EOF
spawn rsync -avzP -e "ssh -p xxx" --bwlimit=5000 $time xxx@xxxx:/xxx/xxx
set timeout 300
expect {
 "*yes/no" { send "yes\r"; exp_continue }
 "*password:" { send "changeme\n" }

}
send "exit\r"
expect eof
EOF

if [ $? -ne 0 ]
then
 let count_tmp++
 echo "failed, try again"
 sleep 1h
else
   echo "success"
   break
fi
done

И следующее: 2020-08-01 - это папка, а xxx-2020-08-01.txt - файлы в нем. Records_history_information-2020-08-01.txt загружается, когда произошла ошибка и процесс был прерван.

- информация о папке удаленного хоста (2020-08-01)

drwxr-xr-x 2 hgd hgd 4096 Aug  1 20:25 2020-08-01

- файл удаленного хоста ( Records_history_information-2020-08-01.txt) информация

-rw-rw-rw- 1 hgd hgd  58182912 Jan  1  1970 records_history_information-2020-08-01.txt

- информация о папке локального хоста (2020-08-01)

drwxr-xr-x 2 root root       4096 Aug  1 20:16 2020-08-01

- файл локального хоста (records_history_information-2020- 08-01.txt) info

-rw-rw-rw- 1 mysql mysql 727396510 Aug  1 20:16 records_history_information-2020-08-01.txt

локальный журнал crontab (загрузка show records_history_information-2020-08-01.txt прервана, далее - 2020-08-02)

2020-08-01/records_history_information-2020-08-01.txt
2020-08-0292   8%   13.28MB/s    0:00:48

У меня два вопроса:

-Неверное время создания records_history_information-2020-08-01.txt (1970) является результатом сбоя во время загрузки?

-Хост никогда не закрывается вниз (оба) и я установил 5-кратную повторную загрузку. Почему закрывается загрузка? Может ли это быть вызвано таймаутом Rsyn c? Или по другой причине?

1 Ответ

0 голосов
/ 07 августа 2020

1 января 1970 года - это начало Unix «эпохи» (т. Е. Нулевого времени), так что видеть это в случае отказа звучит правдоподобно. Повторный запуск rsyn c с -t или -a должен исправить это.

Ваш ожидаемый сценарий имеет таймаут 5 минут. Если этого времени недостаточно для завершения передачи, или если есть дополнительная подсказка пользователя, которую вы не ожидали, тогда да, она прервет загрузку.

Я предлагаю вам использовать более высокое значение тайм-аута для «ожидать eof» .

Еще несколько примечаний:

  • «Отправить выход» кажется ненужным.
  • Вариант «да / нет» выглядит плохой идеей; если s sh не знает хост, значит, происходит что-то подозрительное, и вам, вероятно, не следует подключаться вслепую.
  • Встраивание пароля в скрипт не идеально; вам следует настроить ключ s sh для автоматического c входа в систему (см. ssh-keygen и ssh-copy-id). Это полностью избавит от необходимости ожидать (вместо этого вы можете использовать инструмент timeout).
...