基于SFTP的文件拷贝软件

Posted Reaver21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于SFTP的文件拷贝软件相关的知识,希望对你有一定的参考价值。

 

上次在使用Renci.SshNet组件时,每次调用Connect()方法,都回抛出个异常,aborted by software on host machine之类的。网上搜了很久,没有说清楚的,有的说防火墙挡住了,也有说主机加密算法不支持等。后来为了尽快实现功能,找了个收费组件ComponentPro,试用1个月。收费的就是6,没报错。

目前软件基本功能实现了,需要考虑长期使用的问题,所以又研究了一番。用SshNet组件连接我的阿里云服务器就没报错,连接我的VMWare Ubuntu就报错。一度怀疑人生。最后在GitHub上找到了开源项目本体,down下来之后引用居然没有之前的错误了,我也是醉了。附上SshNet本体地址:https://github.com/sshnet/SSH.NET

 

那么问题已经消除,但是SshNet组件的下载,尤其是遍历目录中所有文件的下载,做的不是很方便,需要自己写代码。可以参考这里,https://benohead.com/downloading-files-directories-via-sftp-using-ssh-net/  

为了报告下载处理结果,主要是处理的文件夹和文件数量,又写了个类:

 1 public class ProcessedData
 2     {
 3         private ArrayList processedDirList;
 4         private ArrayList processedFileList;
 5         //private int processedDirCount;
 6         //private int processedFileCount;
 7 
 8         public ProcessedData() {
 9             processedDirList = new ArrayList();
10             processedFileList = new ArrayList();
11         }
12 
13         public ArrayList GetProcessedDirList() {
14             return this.processedDirList;
15         }
16 
17         public void AddToProcessedDirList(string dir) {
18             this.processedDirList.Add(dir);
19         }
20 
21         public void AddToProcessedFileList(string file) {
22             this.processedFileList.Add(file);
23         }
24 
25         public ArrayList GetProcessedFileList() {
26             return this.processedFileList;
27         }
28 
29         public int ProcessedDirCount { get { return processedDirList.Count; } }
30 
31         public int ProcessedFileCount { get { return processedFileList.Count; } }
32     }

 

对于目标服务器上的目录和文件,某人说需要一个筛选,要不然可能要从几百个文件里面找,要瞎了,所以加了个Filter。本来考虑练习下正则,后来一想,好像并不需要,用String.Contains()方法就行了。目前是这个样子了:

输入字符后:

 

不要问为什么右边有那么大空白,因为以后还可能加拖拽拷贝功能,右边也可能做个LargeIcon的目录,所以先留着。

这个软件大致如此了,目前打算看看WPF,做一个服务器状态监控和记录查询的较为复杂的软件。

 

以上是关于基于SFTP的文件拷贝软件的主要内容,如果未能解决你的问题,请参考以下文章

如何向vmware中的centos系统拷贝文件

树莓派ssh连接并使用sftp协议拷贝文件到电脑

jsch连接sftp后连接未释放掉问题排查

Windows远程文件拷贝openEuler--WinSCP

Windows远程文件拷贝openEuler--WinSCP

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段