我有一台服务器,其中有一个名为“用户提交的数据”的目录。它包含一堆文件。我使用这个 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 网站上有一篇专门的文章介绍了所有这些内容:如何创建同步文件并随后从源中删除同步文件的脚本?