我正在尝试将本地机器上的 hdf5 二进制文件复制到远程计算刀片。在我的 Qt 应用程序生成所需的目录或文件后,我正在使用 libssh 将它们复制出来。使用 libssh 我可以打开一个 ssh_session,对其进行身份验证,打开一个通道并发送远程命令。
for (QStringList::iterator it = ipList.begin(); it != ipList.end(); ++it)
{
ssh_session my_session = new ssh_new();
QString ip_address = *it;
ssh_options_set(my_session, SSH_OPTIONS_HOST, ip_address.toStdString().c_str());
// Connect...Authenticate using public key....
QString command = QString("rm -r %2; cp -r %1 %1; cp /local/file.txt /remote/file.txt").arg(local_dir, remote_dir);
execute_remote_command(my_session, command.toStdString().c_str());
// Open channel and execute command
ssh_disconnect(my_session);
ssh_free(my_session);
}
正在为每个单独的计算刀片执行此命令。在每个呼叫之间,我将关闭和打开到下一个刀片的 ssh 会话。这些文件使它成为刀片,但它们似乎已损坏。它们的文件大小完全相同。我还没有想出一种方法来比较各个字节以查看它们的损坏程度,那里的任何提示也将不胜感激。
当我在单独的测试终端程序中运行我的 ssh 复制命令时,这些文件似乎使其完好无损并且在刀片上是可读的。该问题似乎仅在从 Qt GUI 程序中移动文件时出现。
编辑:所以更深入地研究出了什么问题,远程服务器上的文件似乎大小不一样。它似乎丢失了大部分字节。最重要的是,当我逐字节检查文件的本地版本时,几乎所有字节都不同。