![对于一个大文件(2GB),简单的“复制”命令在本地和 SSH 执行之间速度会有什么差异吗?](https://linux22.com/image/1402621/%E5%AF%B9%E4%BA%8E%E4%B8%80%E4%B8%AA%E5%A4%A7%E6%96%87%E4%BB%B6%EF%BC%882GB%EF%BC%89%EF%BC%8C%E7%AE%80%E5%8D%95%E7%9A%84%E2%80%9C%E5%A4%8D%E5%88%B6%E2%80%9D%E5%91%BD%E4%BB%A4%E5%9C%A8%E6%9C%AC%E5%9C%B0%E5%92%8C%20SSH%20%E6%89%A7%E8%A1%8C%E4%B9%8B%E9%97%B4%E9%80%9F%E5%BA%A6%E4%BC%9A%E6%9C%89%E4%BB%80%E4%B9%88%E5%B7%AE%E5%BC%82%E5%90%97%EF%BC%9F.png)
示例场景
:Linux机器(我认为操作系统并不关心)。
-OpenSSH 服务器。
-源大文件在硬盘中,大约 2GB(我认为 SSD 或经典 HD 也不介意)。
- 文件的目标:a(中等速度 2.0)USB 闪存盘(我认为 3.0 甚至 1.0 也不会困扰你)。
我要点一份简单的:
cp MyBigFile.iso /media/pendrive
将 U 盘插在同一台机器上。
有两种情况:
- 本地 shell(我坐在机器上,并执行
cp
)命令复制大文件。 - SSH 外壳(我到同一个局域网上的另一台电脑上,通过SSH客户端登录)远程命令复制这个大文件。
期望速度有差异有意义吗?为什么?
我认为,事实上,当文案包含许多小文件,服务器和客户端之间的通信(对于 SSH shell)可能会增加许多小的延迟(如果您认为我错了,请随意纠正这个逻辑),但我不确定是否会有大的延迟。
(欢迎对我的“不打扰”上述场景也是如此。)
答案1
当您通过 ssh 进入计算机并运行 时cp fromFile toFile
,该副本将完全在远程计算机上运行。它不会通过 ssh 进行通信来执行复制。事实上,没有任何参数,cp 甚至不会向 ssh 会话报告进度,它只会完成,然后您会看到提示。
如果您要复制大量小文件并使用cp -v
,cp 将在复制时打印每个文件的名称。打印名称将导致通过 ssh 连接进行通信。如果您的连接速度较慢,cp 命令打印文件名的速度可能会比 ssh 通过线路传输文件名的速度快,而且在打印足够多的文件名后,cp 可能会阻止尝试写入 stdout。
我从未真正见过这种情况发生,磁盘速度一直是限制因素,但我认为理论上是可能的。