Networking 如何通过网络移动大量文件

Networking 如何通过网络移动大量文件,networking,compression,zip,Networking,Compression,Zip,假设我们有下一种情况:两台计算机通过网络连接,目录(平面)中充满了需要通过网络移动的小文件(甚至大小不同)。 什么更快: 1) 通过网络或网络直接移动目录 2) 压缩(或通过任何其他算法压缩),移动压缩文件,然后解压 根据我的经验,这似乎是第二个,但我怎么能认为它是正确的呢 我知道这并不是那么简单——是或不是,有很多玩家喜欢带宽、zip算法、文件大小和平均压缩比等等,但我只是想知道是否有一些我不知道的计算机科学?我认为更好的方法是将多个文件压缩到单个存档 例如,现代3d游戏-在游戏运行时,大量游

假设我们有下一种情况:两台计算机通过网络连接,目录(平面)中充满了需要通过网络移动的小文件(甚至大小不同)。 什么更快: 1) 通过网络或网络直接移动目录 2) 压缩(或通过任何其他算法压缩),移动压缩文件,然后解压

根据我的经验,这似乎是第二个,但我怎么能认为它是正确的呢


我知道这并不是那么简单——是或不是,有很多玩家喜欢带宽、zip算法、文件大小和平均压缩比等等,但我只是想知道是否有一些我不知道的计算机科学?

我认为更好的方法是将多个文件压缩到单个存档

例如,现代3d游戏-在游戏运行时,大量游戏资源文件被压缩到更大的档案中,并直接解压缩到内存中。这大大减少了游戏负载

优点:

1) 不需要多次重新读取目录索引,目录索引只读取一次

2) 不需要制作多个fopen

3) 数据压缩-当使用现代处理器(不超过10年:)时,从硬盘读取数据比解包过程慢得多(我不知道SSD磁盘的情况如何)

4) 使用硬盘时,读取单个(甚至是碎片化的)大文件要比读取磁盘不同位置的许多小文件快得多。当读取多个文件时,由于硬盘需要定位磁头,读取速度会降低


5) 例如,在使用FTP传输多个文件时,我们需要为每个文件创建STOR命令,而在传输存档文件时,我们只需要一个STOR命令。

您没有说明您使用的是哪种系统。最好的办法是两者兼而有之。通过网络发送压缩的归档文件,并在另一端对其进行解压缩,而不会将整个压缩的归档文件存储在任何一端。在Unix系统上,这通常通过tar完成,tar调用gzip进行压缩。您可以直接将焦油注入管道,然后在另一端取出焦油。您也可以使用rsync,它也可以压缩链接,但更复杂,避免发送已经在目的地的数据。

这里有一个类似的问题: