我正在使用 codeship.io 将代码存储库中的文件上传到没有SSH的共享主机。
这是原始命令,需要两个小时才能完成:
lftp -c "open -u $FTP_USER,$FTP_PASSWORD ftp.mydomain.com;设置 SSL:验证证书编号;mirror -R ${HOME}/clone//public_html/targetfolder"
我尝试添加 -n,它应该只上传较新的文件。但我仍然可以从流日志中看到正在上传一些未更改的文件:
lftp -c "open -u $FTP_USER,$FTP_PASSWORD ftp.mydomain.com;设置 SSL:验证证书编号;mirror -R -n ${HOME}/clone//public_html/targetfolder"
正确上传仅更新文件的正确命令是什么?
命令正确。
问题是为什么 lftp 认为文件"已更改"。如果文件丢失,它会上传文件,具有不同的大小,具有不同的修改时间。
您可以尝试在 lftp 将文件上传到的目录上执行"ls"操作,看看这些文件是否真的存在,是否具有相同的大小以及相同或更新的修改时间。
如果由于某种原因修改时间较长,请将--ignore-time
添加到镜像命令中。
Codeship 在部署之前先构建代码。
这意味着 Codeship 临时服务器中的代码比管道中的其他任何代码都新,即使代码本身可能没有更改。
这就是为什么当您使用lftp
"仅较新的文件"选项时,它只是意味着一切。
据我所知,您不能只上传实际的新文件。