如何检测FTP文件传输完成?

我正在编写一个脚本来轮询FTP站点的文件,并在可用时在本地下载它们。文件由各种源方随机存放到FTP站点。在下载之前,我需要一种能够检测FTP站点上的文件是否已完全由源方传输的方法。有关如何去做的任何想法? 在此先感谢您的帮助!     
已邀请:
如果您无法操作FTP服务器本身,我想到的唯一检查方法是轮询文件大小,如果文件大小没有更改,则可以确定上传已完成。但没人能保证。理想情况下,您可以调整FTP服务器并使其在完成一些上载后执行一些脚本。 一些伪代码:
my %filesizes;
my %processed;

sub poll {
    foreach (@files_on_ftp) {
         if($_->filesize == $filesizes{$_->filename} and not $processed{$_->filename}) {
             process($_);
             $processed{$_->filename)++;
         }
    }
}
    
如果您可以控制客户端,则更安全,更清洁,更有效的方法是让客户端执行以下操作: 将文件上传到.... / partial / somefile 将.... / partial / somefile重命名为.... / complete / somefile 这会导致文件一次性出现在后一个目录中,因此您只需扫描该目录即可。如果您想要一个非轮询解决方案,您甚至可以要求OS通知该目录的添加内容。     
像ikegami的解决方案取决于我的客户端: 首先是文件上传 如果完成,客户端上传空标志文件(如
file.name.txt.finished
) 当你看到
finished
文件时,你知道文件准备好了。     

要回复问题请先登录注册