从 shell 脚本复制到已安装的远程服务器上的文件是否必须通过网络传输到我的计算机?

从 shell 脚本复制到已安装的远程服务器上的文件是否必须通过网络传输到我的计算机?

我可以访问我工作地点的远程文件存储服务器(如果需要的话,可以通过 VPN)。我连接到服务器,并在家里的 Mac 上运行了一个 shell 脚本,将大型文件从服务器上的一个位置复制到服务器上的另一个位置。速度非常慢,所以我尝试使用 Microsoft 远程桌面登录到我工作地点的 Windows 计算机(因此在同一个本地网络上),并使用批处理文件进行复制。这似乎要快得多。

这让我很好奇,想知道每个过程到底发生了什么。我怀疑在第一种情况下,文件是通过互联网从服务器传输到我的本地计算机,然后再传输回文件服务器。而在后一种情况下,文件只是在公司的本地网络内传输,因此复制速度更快。这个假设正确吗?任何能满足我对这两个过程如何工作的好奇心的信息都将不胜感激!

答案1

你做对了!(如果我没记错的话)

当您使用本地文件管理器时,它会在本地执行所有操作。即使您在同一台服务器上的两个位置之间复制文件,它也会通过将数据读入本地缓冲区并将其写回来执行操作。因此,所有数据都会通过网络两次。

当您登录到远程机器时,所有操作都在远程机器上执行,除了它会向您发送控制台输出的副本。

理论上,文件管理器的行为可以通过巧妙的插件(或巧妙的内置功能)来修复,这些插件可以拦截服务器到服务器的复制,并通过登录服务器并在本地执行操作来执行复制。我没见过这样的插件,但可能只是因为我从不介意。处理 FTP 服务器的专用文件管理器支持内置在 FTP 文件协议中的类似功能 - 一个服务器可以直接将数据复制到另一个服务器,而无需通过客户端计算机移动它们。

相关内容