通过网络传输文件的最快方法是什么(FTP,HTTP,RSync等)

one*_*elf 21 ftp networking rsync file-upload http

我试图找出在两个系统之间通过网络传输大量数据的最佳方法.我目前正在研究FTP,HTTP或RSync,我想知道哪一个是最快的.我在网上找了一些答案,发现了以下网站:

问题是这些都是旧的,并且更多地谈论协议如何通信之间的理论差异.我对实际的基准测试更感兴趣,可以说对于特定的设置,当传输不同大小的文件时,一个协议比其他协议快x%.

有没有人测试这些并将结果发布到某个地方?

one*_*elf 36

好的,我设置了以下测试:

  • 硬件:2台台式机Intel Core Duo CPU @ 2.33GHz,内存4G.
  • 操作系统:两台机器上的Ubuntu 11.10
  • 网络:100Mb专用交换机,两台机器都连接到它.
  • 软件:

我将以下文件组上传到每个服务器:

  1. 1 100M文件.
  2. 10个10M文件.
  3. 100个1M文件.
  4. 1,000个100K文件.
  5. 10,000个10K文件.

我在多次运行中获得了以下平均结果(以秒为单位的数字):

|-----------+---------+----------|
| File Size | FTP (s) | HTTP (s) |
|-----------+---------+----------|
|      100M |       8 |        9 |
|       10M |       8 |        9 |
|        1M |       8 |        9 |
|      100K |      14 |       12 |
|       10K |      46 |       41 |
|-----------+---------+----------| 
Run Code Online (Sandbox Code Playgroud)

因此,似乎FTP在大文件中稍微快一些,而且在许多小文件中HTTP速度要快一些.总而言之,我认为它们具有可比性,服务器实现比协议更重要.

  • 很高兴看到scp和几个rsync变种(有/没有压缩, - inplace等... :) (7认同)

Tom*_*son 7

如果每端的机器相当强大(即不是上网本,NAS机箱,烤面包机等),那么我希望所有通过TCP工作的协议在传输批量数据时的速度大致相同.应用程序协议的工作实际上只是填充TCP传输的缓冲区,因此只要它们能够保持完整,TCP就会设置速度.

执行压缩或加密的协议可能会在功能较弱的计算机上阻塞CPU.我的上网本比FTP快得多.

rsync可以快速传输增量更改,但对于批量传输,它没有优于dumber协议的优势.


小智 6

另一个要考虑的实用程序是 bbcp:http ://www.slac.stanford.edu/~abh/bbcp/ 。

一个很好但过时的使用它的教程在这里:http : //pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm。我发现 bbcp 非常擅长传输大文件(多 GB)。根据我的经验,它平均比 rsync 快。