0

我正在使用 codeship.io 将代码存储库中的文件上传到没有 SSH 的共享主机。

这是原始命令,需要两个小时才能完成:

lftp -c "打开 -u $FTP_USER,$FTP_PASSWORD ftp.mydomain.com; 设置 ssl:verify-certificate no; 镜像 -R ${HOME}/clone/ /public_html/targetfolder"

我尝试添加-n,它应该只上传较新的文件。但我仍然可以从流日志中看到正在上传一些未更改的文件:

lftp -c "打开 -u $FTP_USER,$FTP_PASSWORD ftp.mydomain.com; 设置 ssl:verify-certificate no; mirror -R -n ${HOME}/clone/ /public_html/targetfolder"

正确上传仅更新文件的正确命令是什么?

4

2 回答 2

2

命令是正确的。

问题是为什么 lftp 认为文件“已更改”。如果文件丢失,它会上传一个文件,具有不同的大小和不同的修改时间。

您可以尝试在 lftp 将文件上传到的目录上执行“ls”,并查看文件是否真的存在,是否具有相同的大小以及相同或更新的修改时间。

如果由于某种原因修改时间较旧,请添加--ignore-time到镜像命令。

于 2016-04-06T09:23:27.747 回答
0

Codeship 在部署之前首先构建代码。

这意味着 Codeship 临时服务器中的代码比管道中的任何其他代码都更新,即使代码本身可能没有更改。

这就是为什么当您使用lftp“仅较新的文件”选项时,它只是意味着一切。

据我所知,您不能只上传实际的较新文件。

于 2018-12-08T10:46:58.457 回答