我想知道是否有一个文件的表面大小为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
选项以获取实际大小。
因此,主要问题是:将文件复制到某个目录时要考虑的大小是硬盘驱动器,U盘,DVD等?
真实大小。
目标文件。
在最简单的实现就是不要试图提前预测这一点。
除此之外,还需要一小部分的开销。这种开销的预测将更加复杂。
对稀疏文件的支持会有所不同,具体取决于文件系统和进行复制的程序。最值得注意的是,FAT文件系统不支持稀疏文件。
GNUcp
自动检测并处理稀疏文件。它不会事先检查空间。(基于GNU coreutils 8.29的文档)
默认情况下,稀疏试探法会检测到稀疏的SOURCE文件,并且也将相应的DEST文件设为稀疏的。这是所选择的行为
--sparse=auto
。指定--sparse=always
当SOURCE文件包含足够长的零字节序列时,创建一个稀疏的DEST文件。
请注意,文件系统可以具有不同的块大小。这可能导致稀疏文件使用的空间量增加,甚至减少!
(通常,写入文件数据还需要内部文件系统结构,这些结构会占用它们自己的空间。文件的大小(实际大小和表观大小均未显示)。在传统的UNIX文件系统设计中,您还需要一个可用的inode。空间可用于i节点被显示df -i
而最明显的是,你需要一些空间来存储文件名:-)。这通常以父目录的大小显示。我是否会通过创建大量空文件来耗尽磁盘空间来专门讨论此问题?)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句