
Estou trabalhando em um executor de CI no GitLab que deve transferir arquivos alterados via FTP para um ambiente de desenvolvimento.
lftp
parecia ser uma boa solução para isso, pois é fácil de usar e não muito complicado.
Estou usando isso para transferir arquivos:
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/"
A parte problemática é o -Rvpn
conjunto de parâmetros, especificamente o arquivo -n
. Supõe-se que isso espelhe apenas os arquivos mais recentes, que provavelmente funcionarão verificando os tempos de alteração dos arquivos.
Agora meu repositório usa o horário correto, mas meu servidor está com uma hora de antecedência (GMT+2 em vez de +1), o que levará a um erro falso ao verificar arquivos mais recentes.
Eu poderia remover, -n
mas todo o repositório seria clonado, não apenas os arquivos alterados (e, portanto, mais recentes).
Existe alguma maneira de definir um deslocamento de tempo lftp
para adicionar +1 hora à data de alteração do arquivo ou algo semelhante? eu chequeio manualmas não encontrei nada parecido.
Responder1
Se você olhar o manual vinculado, lftp
há uma opção que permite definir o fuso horário do site remoto. Pode valer a pena tentar configurá-lo e ver se lftp
compensa corretamente.
ftp: fuso horário (string)
Assuma este fuso horário para o horário nas listagens retornadas pelo comando LIST. Esta configuração pode ser o deslocamento GMT [+|-]HH[:MM[:SS]] ou qualquer valor TZ válido (por exemplo, Europa/Moscou ou MSK-3MSD,M3.5.0,M10.5.0/3). O padrão é GMT. Defina-o com um valor vazio para assumir o fuso horário local especificado pela variável de ambiente TZ.
Além disso, ele possui uma opção para ignorar o tempo ( --ignore-time
o que pode permitir que você confie apenas no tamanho do arquivo e algumas opções ( --newer-than
e --older-than
) para definir um horário "que importa", para que você possa configurá-lo de uma maneira que nem todos os arquivos são transferidos.