我正在 GitLab 中开发一个 CI 运行器,它应该通过 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 值(例如欧洲/莫斯科或 MSK-3MSD、M3.5.0、M10.5.0/3)。默认值为 GMT。将其设置为空值以假定环境变量 TZ 指定的本地时区。
此外,它还有一个忽略时间的开关(--ignore-time
这可能使您能够使其仅依赖于文件大小和一些开关(--newer-than
和--older-than
)来定义“重要的”时间,因此您可以以并非所有文件都被传输的方式进行设置。