我有一个 FTP 服务器,用户可以将音乐或谈话节目上传到该服务器。我有一个服务器,它会通过基于时间的调度自动抓取特定目录中的这些文件。我们遇到的一个问题是,当服务器抓取文件时,文件仍可能正在上传。有什么方法可以避免这种情况吗?
我非常确定这是因为上传是 FTP,而 Windows 使用 smb。在此期间,我所做的是在 FTP 服务器和音频应该继续的服务器之间使用一台计算机,并在其上安装一个免费的镜像软件。它缓解了一些问题,但它并不可靠。
答案1
我以前使用过 PowerShell 脚本来实现这一点。该Move-Item
命令可以很好地处理这个问题。创建一个循环来查找文件并告诉它移动找到的内容。
while ($true) {
Get-ChildItem $SourcePath | Move-Item -Destination $destPath -Force
Sleep 5
}
我将 PS 脚本设置为在启动时在任务计划程序中执行。由于权限问题,移动到网络共享时会变得有点棘手,但 YMMV。
您甚至可以过滤要移动的内容。此示例不会移动文件夹:
Get-ChildItem $SourcePath | Where {!$_.psiscontainer} | Move-Item -Destination $destPath -Force