c# - C#中使用SSH.net从远程文件获取文件内容

标签 c# ssh copy mysql ssh.net

我正在使用 SSH.NET (Renci.SshNet) 库来检索 SQL 文件的内容,但它似乎无法处理大文件,因为当我尝试在 500MB 文件上使用以下代码时,我的计算机崩溃了。

using (SshCommand command = client.CreateCommand("cat " + filename))
                                {
                                    filecontent = command.Execute();
                                    SaveFileDialog theDialog = new SaveFileDialog();
                                    theDialog.Title = "Backup - " + filename;
                                    theDialog.Filter = "SQL files|*.sql";
                                    theDialog.FileName = filename;
                                    if (theDialog.ShowDialog() == true)
                                    {
                                        File.WriteAllText(theDialog.FileName, filecontent);
                                    }

                                }

然后我尝试使用 SFTP 来获取文件,但由于某种原因我无法访问 httpd.private 文件夹,因此我当前在尝试复制大文件时陷入困境。

如何使用与 C# 应用程序类似的技术来传输大文件以进行保存?我相信 SFTP 是一个更好的解决方案,但我无法到达生成 sql 的文件夹。

SQL文件是通过mysqldump命令生成的。

谢谢!

最佳答案

我必须实现内置于 SSH.net 中的 SftpClient 的使用,并使用 SftpClient.ListDirectory() 迭代文件夹,并将文件名与我正在查找的文件进行比较。然后我打开一个流并使用 SftpClient.DownloadFile() 下载文件。

关于c# - C#中使用SSH.net从远程文件获取文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31371875/

相关文章:

c# - MVC 3 - 将 ViewBag 内容分配给 Javascript 字符串

ssh - 破坏 Vagrant 上 Ansible 中的代理转发

C 中每个 block 复制一个文件 block

c# - 列表<>求和重载

c# - Xamarin Resource.Designer.cs 生成 const 而不是 static

c# - "The operation is not valid for the state of the transaction"错误和交易范围

ftp - 在没有 SSH 的服务器上创建符号链接(symbolic link)?

Ruby Net::SSH 在 PTY 中获取退出状态

linux - 复制除 libgcc*.so 之外的所有 *.so 文件

java - 将 ArrayList 的最后 3 个元素复制到 List<String> 中