
Я работаю над CI-раннером в GitLab, который должен передавать измененные файлы по FTP в среду разработки.
lftp
Мне показалось, что это хорошее решение, поскольку оно простое в использовании и не слишком сложное.
Я использую это для передачи файлов:
lftp -c "set ftp:ssl-allow no; open -u $USERNAME_DEV,$PASSWORD_DEV $HOST_DEV; mirror -Rvpn -O $PATH_DEV --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
Проблемной частью является -Rvpn
набор параметров, в частности -n
. Предполагается, что он будет зеркалировать только новые файлы, что, скорее всего, сработает, если проверить время изменения файлов.
Теперь мой репозиторий использует правильное время, но мой сервер опережает время на час (GMT+2 вместо +1), что приведет к ошибке проверки наличия новых файлов.
Я мог бы удалить, -n
но тогда был бы клонирован весь репозиторий, а не только измененные (и, следовательно, более новые) файлы.
Есть ли способ определить смещение времени для lftp
, чтобы оно добавляло +1 час к дате изменения файла или что-то подобное? Я проверилруководствоно ничего подобного не нашел.
решение1
Если вы посмотрите на руководство, ссылку на которое вы дали, lftp
там есть опция, которая позволяет вам определить часовой пояс для удаленного сайта. Возможно, стоит попробовать установить его и посмотреть, когда будет lftp
корректная компенсация.
ftp:часовой пояс (строка)
Предполагать этот часовой пояс для времени в листингах, возвращаемых командой LIST. Этот параметр может быть смещением GMT [+|-]HH[:MM[:SS]] или любым допустимым значением TZ (например, Europe/Moscow или MSK-3MSD,M3.5.0,M10.5.0/3). Значение по умолчанию — GMT. Установите пустое значение, чтобы предположить местный часовой пояс, указанный переменной окружения TZ.
Кроме того, в нем есть переключатель, позволяющий игнорировать время ( --ignore-time
что может позволить вам полагаться только на размер файла), а также некоторые переключатели ( --newer-than
и --older-than
) для определения времени, «которое имеет значение», поэтому вы можете настроить его таким образом, чтобы не все файлы передавались.