【问题标题】:How to move lot of files through network如何通过网络移动大量文件
【发布时间】:2012-11-14 14:32:26
【问题描述】:
假设我们有下一种情况:两台计算机通过网络连接,目录(平面)充满了需要通过网络移动的小(甚至不同大小)文件。
什么更快:
1)直接通过网络移动目录或
2)压缩(或通过任何其他算法压缩),移动压缩文件,然后解压缩?
根据我的经验,它似乎是第二个,但我怎么看它是对的?
我知道这不是那么简单 - 是与否,有诸如带宽、压缩算法、文件大小和平均压缩率等因素,但我只是想知道可能有一些我不知道的计算机科学?
【问题讨论】:
标签:
networking
compression
zip
【解决方案1】:
您没有说您使用的是哪种系统。最好的方法是两者都做。通过网络发送压缩档案,然后在另一端解压缩,而无需将整个压缩档案存储在任一端。在 Unix 系统上,这通常使用 tar 完成,它调用 gzip 进行压缩。您可以直接将 tar 压缩到管道中,然后在另一端解压缩。您也可以使用 rsync,它也对链接进行压缩,但更复杂,避免发送已经在目的地的数据。
【解决方案2】:
我认为更好的方法是将多个文件压缩到单个存档。
例如,现代 3D 游戏 - 大量游戏资源文件被压缩到更大的档案中,并在游戏运行时直接解压缩到内存中。这会显着降低游戏加载速度。
优点:
1) 目录索引无需多次重读,目录索引只读一次
2) 无需多次fopen
3) 数据压缩 - 使用现代处理器时(不超过 10 年 :))从硬盘读取比解压过程慢得多(我不知道 SSD 磁盘是怎么回事)。
4) 使用硬盘时,读取单个(甚至是碎片)大文件比读取磁盘不同位置的许多小文件要快得多。当读取多个文件时,由于硬盘需要定位磁头,读取速度会降低。
5) 在传输多个文件时,例如使用 FTP,我们需要为每个文件创建 STOR 命令,而在传输档案时,我们只需要一个 STOR 命令。