c++ - 有什么方法可以通过 SSH 连接打开和读取文件吗?

标签 c++ c linux ssh

我可以访问一些有大量数据的服务器。我无法复制计算机上的全部数据。

我无法在服务器上编译我想要的程序,因为服务器没有我需要的所有库。

我认为服务器管理员不会很高兴看到我来并要求他为我安装一些库......

所以,我尝试弄清楚是否有一种方法可以像这样打开文件,

FILE *fopen(const char *filename, const char *mode);

void std::ifstream::open(const char* filename,  ios_base::openmode mode = ios_base::in);

但通过 SSH 连接。然后像我对通常的程序所做的那样读取文件。

计算机和服务器都运行linux

最佳答案

我假设您正在使用 Linux 笔记本电脑,而远程计算机是某种 super 计算机。

第一个非技术建议:首先请求许可才能远程访问数据。在某些工作场所,即使技术上可行,您也不允许这样做。

你可以使用libssh为此目的,但您需要一些编码并阅读其文档。

您可以考虑使用一些 FUSE文件系统(在您的笔记本电脑上),例如一些sshfs;然后您就可以访问一些 super 计算机文件(如 /sshfilesystem/foo.bar)。这可能是最慢的解决方案,而且可能不是一个非常可靠的解决方案。我真的不推荐它。

您可以请求使用 NFS 的许可坐骑。

也许你可以考虑一些HTTPS使用一些 HTTP/HTTPS 客户端库(如 libcurl)访问(如果远程计算机有您的文件) (或者反过来,一些 HTTP/HTTPS 服务器库,如 libonion )

你可以(但要先征求许可!)使用一些 TLS连接(例如,在远程 super 计算机上手动启动类似服务器的程序)可能通过 OpenSSLlibgnutls

最后,您应该考虑安装(即礼貌地询问远程 super 计算机上的安装)或使用一些 database远程计算机上的软件(例如 PostgreSQLMariaDBRedisMongoDB 服务器)并使您的程序成为数据库客户端应用程序...

顺便说一句,如果您在随机访问中访问几十个 TB 大小的文件(每次运行读取其中的几千字节),或者一百万个文件,其中给定的运行仅访问其中的十几个文件,情况可能会有所不同通过顺序读取,每个文件具有合理的大小(几兆字节)。换句话说,DNA数据、视频电影、HTML文档、源代码……都是不同的情况!

关于c++ - 有什么方法可以通过 SSH 连接打开和读取文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32658031/

相关文章:

c - 合并两个文本文件

c++ - 精确为零的 float / double 相等

c - 在c套接字程序中定义结构

c++ - 为什么在传递 long long 时调用具有两个 double 类型参数的重载函数?

c - 尝试使用子进程写入共享内存中的 int(使用 mmap)

linux - 使用保存在文本中的名称创建多个文件

linux - Shell 脚本在文件 B 中查找文件 A 的字符串并在特定字符串前面打印 Yes 或 No

c++ - 如何在 Linux 上以编程方式 (C/C++) 获取国家/地区代码?

c++ - 如果 B 使用类 A (c++),如何定义类 B 的析构函数?

c++ - 如何推送字符数组?