在复印时,考虑的是:实际尺寸还是表观尺寸?

在复印时,考虑的是:实际尺寸还是表观尺寸?

我想知道我是否有一个表观大小为 1 GiB 但实际大小为 0 B 的文件是否可以复制到例如具有 512 kiB 可用空间的 USB 闪存盘?

您可以使用以下命令创建一个文件:

dd if=/dev/null of=big-file bs=1 seek=1GiB

现在您可以看到外观尺寸和实际尺寸:

du --apparent-size -hs big-file

笔记:删除--apparent-size获取实际尺寸的选项。

因此,主要问题是:将文件复制到某个目录(硬盘驱动器、USB 闪存盘、DVD 等)时会考虑哪种大小?

答案1

实际尺寸。

目标文件的。

最简单的实现就是不要试图提前预测这一点。

除此之外,还需要一小部分作为开​​销。这种开销的预测会更加复杂。


对稀疏文件的支持有所不同,具体取决于文件系统和进行复制的程序。最值得注意的是,FAT 文件系统不支持稀疏文件。

GNUcp自动检测并处理稀疏文件。它不会提前检查空间。 (基于 GNU coreutils 8.29 的文档)

默认情况下,通过粗略启发式检测稀疏源文件,并且相应的目标文件也变得稀疏。这就是 所选择的行为--sparse=auto。指定 --sparse=always 只要 SOURCE 文件包含足够长的零字节序列就创建稀疏 DEST 文件。

请注意,文件系统可以具有不同的块大小。这可能会导致稀疏文件使用的空间量增加,甚至减少!

(一般写入文件数据需要占用自己空间的内部文件系统结构。这不会显示在文件的大小中 - 既不是实际大小,也不是外观大小。在传统的 UNIX 文件系统设计中,您需要一个空闲的索引节点。可用于 inode 的空间如下所示df -i。最明显的是,您需要一些空间来存储文件名:-);这通常显示在父目录的大小中。这在问题中具体讨论创建大量空文件是否会耗尽磁盘空间?

相关内容