从 vsftpd ftp 客户端上传 /tmp 中的文件,上传完成后将其移动到原始文件夹

从 vsftpd ftp 客户端上传 /tmp 中的文件,上传完成后将其移动到原始文件夹

我的应用程序出现了问题。情况是,有一个 php cron 每 1 分钟运行一次,它处理上传文件夹,其中文件通过 ftp 服务器 (vsftpd) 上传。如果服务器正在上传一个 1GB 的文件,php cron 将处理该文件,即使它没有完全上传。我无法更改 cron 时间,但我想知道 vsftpd 是否有任何功能,可以通过它上传文件,然后在/tmp上传完成后移动到原始文件夹?

答案1

不,它没有内置此功能。
但是有解决方案。

最好的办法可能是,告诉上传程序使用不同的名称上传,例如file-whatever.txt.incomplete,一旦上传完成,就将其重命名为正常名称。
优点是:
重命名速度很快(因为文件位于同一文件系统上)。
如果上传没有正确完成,则不会重命名。
缺点当然是,您需要更改上传过程和 PHP cronjob(以忽略*.incomplete文件)。

另一个解决方案是按照你的建议将其上传到不同的文件夹,然后使用类似因克龙
通过它,您可以查看文件夹并将完成的文件移动到其他文件夹。
缺点:如果上传中途失败,它仍会被移动并可能被处理。

相关内容