使用 WinSCP 仅下载新文件

Posted

技术标签:

【中文标题】使用 WinSCP 仅下载新文件【英文标题】:Download only new files with WinSCP 【发布时间】:2022-01-07 02:26:06 【问题描述】:

我目前正在编写一个 WinSCP 脚本,其目的是从 SFTP 服务器检索所有文件,然后将它们放在目标服务器中的指定位置(脚本所在的位置,仅供参考)。 是否有人检查文件是否已在目标服务器上传输?有的时候会覆盖吗?在那种情况下,这真的是一件坏事吗?在这种情况下,我猜如果目标服务器上已经存在该文件,我不希望发生任何事情。如果它不存在,那么我想继续转移。

您将在下面找到到目前为止编写的代码

# Automatically abort script on errors
option batch abort

# Disable overwrite confirmations that conflict with the previous
option confirm off 

# Connect using a password 
open sftp://SERVER@IP_ADDRESS:PORT -privatekey="PRIVATE_KEY" -hostkey="HOSTKEY" -passive=off 

# Change remote directory
cd in
cd DIRECTORY

# Force binary mode transfer
option transfer binary

# Get ALL files from the directory specified
get /*.csv* \\DIRECTORY

# Remove all .csv files
rm /*.csv

# Exit WinSCP
bye

非常感谢您的帮助,希望它足够清楚,否则请告诉我是否可以为您提供更多信息

【问题讨论】:

【参考方案1】:

最简单的解决方案是将-neweronly switch 添加到您的get command:

get -neweronly /*.csv \\DIRECTORY

对于非常相似的结果,您也可以使用synchronize command:

synchronize local \\DIRECTORY / -filemask=*.csv

另请参阅 Downloading the most recent file 上的 WinSCP 文章。

【讨论】:

以上是关于使用 WinSCP 仅下载新文件的主要内容,如果未能解决你的问题,请参考以下文章

SSH 主机密钥指纹...与模式不匹配...在 C# 中使用 WinSCP .NET 程序集下载文件时

在包含空格的批处理文件中使用 WinSCP 时,如何从 FTP 下载中排除子文件夹?

在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?

使用 WinSCP 仅传输选定的子文件夹集,而不传输根文件夹中的文件

WPF 使用 WinSCP 做 FTP 下载

使用 WinSCP .NET 程序集比较本地和远程文件