我正在使用SSH。. NET库中的桌面应用程序。如果连接中断,我如何安排检查上传到服务器的内容?我用文件夹同步方法做了一个小实验,当连接断开时,它在SFTP服务器上创建一个文件,当网络出现时,它开始下载。
public void SynchronizeDirectories(string sourceDirectory, string sourceFolder)
{
try
{
ConnectToHost();
var searchPattern = "*";
var upLoadedFiles =
sftpClient.SynchronizeDirectories(sourceFolder, sourceDirectory, searchPattern);
foreach (var file in upLoadedFiles)
{
LoggerManager.InfoMessage($"File on sftp has been updated {file.Name}");
}
}
catch (Exception e)
{
LoggerManager.ErrorMessage("Error sftp server sync", e);
}
finally
{
Close();
}
}
也许有办法保持文件被创建,直到一个完全同步发生??或者使用WinScp方式创建扩展名为。filepath的文件。
我不确定我理解你想改变的SftpClient.SynchronizeDirectories
的行为。在任何情况下,该方法都不提供任何定制。但是您可以重用它的代码并按照您喜欢的方式修改它。SSH。. NET是开源的。
如果您喜欢WinSCP实现同步的方式,也可以使用WinSCP . net程序集及其Session.SynchronizeDirectories
。
最后我创建了SSH的pull request。NET几天前-新增filepart (.tmp)扩展名#791
我更改了SftpClient.cs
InternalSynchronizeDirectories
方法中的代码,如果文件尚未上传到服务器,我添加了。tmp扩展名。然后在上传时将扩展名更改为原始扩展名。