使用“get -r folder”时sftp以什么顺序获取文件?

Ale*_*nux 5 sftp file-transfer file-copy

我正在使用sftp. 使用该get -r folder命令,我对程序下载内容的顺序感到惊讶。

看起来它会随机选择需要下载的文件。我不敢相信事实确实如此,我在问自己幕后发生了什么?

sftp下载文件夹及其内容时遵循的顺序是什么?

从我目前所见,它不是按名称或大小。

tel*_*coM 9

当您使用该ls命令列出目录内容时,默认情况下它会根据当前语言环境的排序规则将列表按字母数字顺序排序。很容易假设这是文件系统中事物的“自然顺序”——但事实并非如此。

大多数文件系统不会以任何方式对其目录进行排序:将新文件添加到目录时,新文件基本上会获得目录元数据结构中的第一个空闲槽。排序仅在向用户显示目录列表时完成。如果单个目录中有数十万或数百万个文件,这种排序实际上可能需要大量的内存和处理能力。

当处理文件的顺序无关紧要时,最有效的方法是按顺序读取目录元数据并按遇到的顺序处理文件,无需任何明确排序。在大多数情况下,这意味着文件将基本上按照它们添加到目录的顺序进行处理,在旧文件被删除并且后来添加的文件回收其元数据槽的情况下,会穿插新文件。

某些文件系统可能会在其内部设计中使用树结构或其他东西,这些结构可能会对其目录条目强制执行特定顺序作为副作用。但是这样的排序可能基于文件的 inode 编号或其他一些文件系统内部细节,因此不能保证对人类有任何实际用途。

正如@AB在问题评论中所说,find命令或 als -fls --sort=none将列出文件而不进行任何显式排序,无论文件系统以何种顺序存储其目录。