我们的客户端需要通过FTP将指定的文件从他们的网络传输到我们的网络。当一个指定的文件发生更改时,必须自动调用该传输。为此,RoboCopy是完美的。但是,RoboCopy不支持传输到FTP地址。因此,我想将我们的FTP站点映射到客户端服务器上的驱动器号。我发现FtpUse非常适合将FTP映射到驱动器号。映射按预期工作,我可以在中看到FTP站点的内容--我还可以将数据写入映射的FTP驱动器。
因此,假设我已经用以下命令映射了FTP站点以在本地机器上驱动q:
ftpuse Q: [ftp address] [password] /USER:[username]
并尝试使用以下命令设置RoboCopy:
robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30
当RoboCopy运行时,它会失败,出现以下错误消息:
错误87 (0x00000057)复制文件源dir\test2.xlsm参数不正确
我试图映射驱动器并在samme用户帐户下运行RoboCopy命令,但它似乎解决不了这个问题。
希望有人能帮忙。
任何帮助都将不胜感激。
发布于 2015-04-21 00:36:39
在镜像模式下尝试使用WinSCP。WinSCP可以从这里下载:
http://winscp.net/eng/download.php
使用WinSCP,您将不需要映射驱动器,它只是直接连接到FTP并为您工作。
下面是一个小型BAT脚本,它与ROBOCOPY类似。
注意:我添加了-delete选项,删除不再匹配本地文件夹的远程文件。需要双引号,因为本地路径中有空格。
set FTPSERVER=v2008
set FTPUSER=username
set FTPPASS=password
set FTPLOCALE=C:\Users\User\Desktop\Local folder
set FTPREMOTO=/public
winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/" ^
"synchronize remote -delete ""%FTPLOCALE%"" %FTPREMOTO%"
发布于 2013-12-20 17:15:04
当副本执行时,您有创建文件的权限,但不能覆盖它们。文件有多大?根据我收集到的信息,每次编辑一个文件时,文件都会被完整地复制,您将用新版本覆盖旧文件。无法评估文件中更改的内容,只需追加新的数据?由于您并不试图添加数据和您正在使用的工具,因此不允许您覆盖该文件,因此理论上您可以编写某种类型的中间脚本,在复制新文件之前立即检测到过时文件时,该脚本会删除这些文件。这听起来像一个笨拙的解决方案,但整个过程听起来也很笨拙。就我个人而言,我会重新评估这里的目标是什么,也是这样,但我只想回答这个问题。祝好运!
发布于 2015-03-23 21:51:21
既然您已经使用了windows,为什么不使用power shell来实现呢?您只能指定新文件,并使用windows任务调度程序对任务进行调度,所有这些都是内置的windows工具。不需要为内置的功能付费。我想您使用的不是一个安全的FTP连接。一些快速脚本将为您提供一个非常灵活、廉价的解决方案。我有几个power shell脚本,它们根据特定的条件来提取和推送FTP文件。
https://serverfault.com/questions/544848
复制相似问题