在一个文件夹中存储 300k 个文件会引起问题吗?

在一个文件夹中存储 300k 个文件会引起问题吗?

我正在使用 wget 爬取一个大型网站(超过 20 万页)(顺便问一下,有没有更好的工具?)。Wget 将所有文件保存到一个目录中。

该分区是 HFS(我认为),如果我将所有文件放在一个目录中,会引起问题吗?假设我将仅从控制台访问所有文件(我知道 Finder 在处理目录>5k 文件时会出现问题)。

或者是否有办法创建一个微分区,该微分区将被压缩并允许快速、优化地访问此数量的文件?

答案1

尽管底层文件系统是可行的,但您绝对不应该在一个目录中存储那么多文件。当需要浏览该目录的内容时,您很快就会发现,当操作系统尝试构建文件列表等时,存在巨大的延迟。这确实给系统带来了很大的负担。

大多数用于“网页存档”的工具通常会构建与网站布局类似的目录结构。几乎所有网站的内容都不会基于根目录……即 mydomain.com/document-1 ... 它们背后会有一些逻辑,将其分成几个路径(出于各种原因),例如,图像放在 mydomain.com/images 中,有关金鱼的内容放在 mydomain.com/goldfish/ 中,等等……

有几种工具可以为您构建这种目录结构。甚至 wget 也有下载整个网站的选项。就我个人而言,我使用过“追踪“,效果很好。wget 也有命令行选项可以下载整个网站。看看 -r(递归)选项。只需确保设置了域名列表,这样您就不会在多个网站上无限地下载链接。最好阅读一下wget 手册页

答案2

维基百科指出 HFS 的文件限制为 65535。因此,如果您的分区确实是 HFS,那么您就会达到这个限制。


来自维基百科:

此外,65,535 个分配块的限制导致文件的“最小”大小相当于磁盘大小的 1/65,535。因此,任何给定卷,无论其大小,最多只能存储 65,535 个文件。此外,任何文件都会被分配比其实际需要更多的空间,直至分配块大小。当磁盘较小时,这无关紧要,因为单个分配块大小微不足道,但当磁盘开始接近 1 GB 时,任何文件可以占用的最小空间量(单个分配块)变得过大,浪费了大量的磁盘空间。例如,在 1 GB 的磁盘上,HFS 下的分配块大小为 16 KB,因此即使是 1 字节的文件也会占用 16 KB 的磁盘空间。对于拥有大文件(如图片、数据库或音频)的用户来说,这种情况不是什么大问题,因为这些较大的文件浪费的空间占其文件大小的百分比较少。另一方面,拥有许多小文件的用户可能会因为分配块大小较大而损失大量空间。这使得将磁盘分区为较小的逻辑卷对 Mac 用户非常有吸引力,因为存储在较小卷上的小文档比存储在大分区上占用的空间要少得多。FAT16 文件系统中也存在同样的问题。

相关内容