对于一个大文件(2GB),简单的“复制”命令在本地和 SSH 执行之间速度会有什么差异吗?

对于一个大文件(2GB),简单的“复制”命令在本地和 SSH 执行之间速度会有什么差异吗?

示例场景
Linux机器(我认为操作系统并不关心)。
-OpenSSH 服务器
-源大文件在硬盘中,大约 2GB(我认为 SSD 或经典 HD 也不介意)。
- 文件的目标:a(中等速度 2.0)USB 闪存盘(我认为 3.0 甚至 1.0 也不会困扰你)。

我要点一份简单的:

cp MyBigFile.iso /media/pendrive

将 U 盘插在同一台机器上。
有两种情况:

  1. 本地 shell(我坐在机器上,并执行cp)命令复制大文件。
  2. SSH 外壳(我到同一个局域网上的另一台电脑上,通过SSH客户端登录)远程命令复制这个大文件。

期望速度有差异有意义吗?为什么?

我认为,事实上,当文案包含许多小文件,服务器和客户端之间的通信(对于 SSH shell)可能会增加许多小的延迟(如果您认为我错了,请随意纠正这个逻辑),但我不确定是否会有大的延迟。

(欢迎对我的“不打扰”上述场景也是如此。)

答案1

当您通过 ssh 进入计算机并运行 时cp fromFile toFile,该副本将完全在远程计算机上运行。它不会通过 ssh 进行通信来执行复制。事实上,没有任何参数,cp 甚至不会向 ssh 会话报告进度,它只会完成,然后您会看到提示。

如果您要复制大量小文件并使用cp -v,cp 将在复制时打印每个文件的名称。打印名称将导致通过 ssh 连接进行通信。如果您的连接速度较慢,cp 命令打印文件名的速度可能会比 ssh 通过线路传输文件名的速度快,而且在打印足够多的文件名后,cp 可能会阻止尝试写入 stdout。

我从未真正见过这种情况发生,磁盘速度一直是限制因素,但我认为理论上是可能的。

相关内容