使用 WinSCP 的脚本,当将远程目录同步到本地目录时,如何让它删除已从远程端同步的文件?

使用 WinSCP 的脚本,当将远程目录同步到本地目录时,如何让它删除已从远程端同步的文件?

我有一台服务器,其中有一个名为“用户提交的数据”的目录。它包含一堆文件。我使用这个 WinSCP 命令将此目录的文件同步到我的本地目录:

synchronize local "C:\test\user-submitted data" "/test/user-submitted data" -delete

local模式意味着:

当第一个参数为 时local,远程目录的更改将应用​​于本地目录。当第一个参数为 时remote,本地目录的更改将应用​​于远程目录。当第一个参数为 时both,本地和远程目录均可修改。

和:

-delete 删除过时的文件。忽略both模式。

来源:https://winscp.net/eng/docs/scriptcommand_synchronize

当我运行 WinSCP 脚本时,它会完美地将远程目录中的文件连接并同步到本地目录,但不会删除任何文件。只有当我实际手动删除远程端的文件然后再次运行脚本时,它才会删除本地副本。但是当“完成”(同步/下载)时,它不会删除远程端的副本。

当远程文件已同步/下载时,如何让它删除它们?

如果我必须手动执行此操作,我如何知道哪些已经同步?

请不要告诉我使用该both模式,因为我不想将本地目录中的任何文件上传到远程端。它应该是“单向”的。

答案1

我明白了。您使用get命令代替synchronize,并使用-delete

答案2

当您想要在传输后删除源文件时,您不能同步文件夹。您的目标不是让文件夹两端的内容相同。恰恰相反。

您想要下载(而不是同步)并删除源文件。

要下载和删除,请使用get -delete

get -delete "/test/user-submitted data/*" "C:\test\user-submitted data\" 

WinSCP 网站上有一篇专门的文章介绍了所有这些内容:如何创建同步文件并随后从源中删除同步文件的脚本?

相关内容