我对 unix 有点菜鸟,但这个问题似乎非常基础,但我却无法在任何地方找到答案。
基本上,据我所知,sFTP 只是通过 ssh 进行的 FTP。那么,为什么我不能像在 ssh 上一样在服务器端将文件从一个文件夹拖放到另一个文件夹。为什么当我想解压服务器文件夹中的 .tar 文件时,它要先将其复制到我的机器然后再复制回来?为什么它不能像我使用命令行时那样直接解压。我知道当我使用命令行时,它会使用远程机器的资源,但为什么 sFTP 不能这样做呢?
有没有办法在 GUI 中执行我通常通过 SSH 执行的命令?我尝试将驱动器映射到我自己的机器上,我尝试过很多 sFTP 客户端,但这样做很愚蠢。还有其他我不知道的程序吗?
答案1
我知道当我使用命令行时它会使用远程机器的资源,但是为什么 sFTP 不能这样做呢?
因为它是一个文件传输协议,而不是远程shell。
你确实在这里回答了你自己的问题 - 只需启动一个 ssh 会话并解压到你心目中即可。
答案2
我使用一个名为 WinSSHd 的程序,并且使用名为“Tunnelier”的附带程序,该程序有一个 FTP GUI,可以通过 WinSSHd 托管的 SSH 端口建立隧道。
因此,显然,您不能在 unix 上使用 WinSSHd,但可以使用隧道工Windows 客户端连接到您的 Unix SSH 守护程序并执行您的 FTP。
答案3
正如已经指出的那样,SSH 和 SFTP 是不同的东西,但是对于您描述的特定场景,SSHFS/SFTP 客户端应该理解您的请求并尝试直接在远程计算机(您正在连接的计算机)上执行解压缩,而不是将其关闭、解压缩并将结果复制回来。
我想现在这种情况越来越普遍了,很多人家里都有几乎只用于存储的系统,比如运行 Ubuntu,并在那里托管大量文件。我想编程并不难(执行 unzip/unrar/$WHATEVER_FILE_MANIPULATION 所需的代码),你应该让软件提供商编写该功能的代码。我会为 GNU/Linux 平台提供支持。