と仮定coreutils
du
しcp
ます。
cp
ファイルをコピーするとき、ヒューリスティックを使用してその「まばらさ」を維持しようとします。
デフォルトでは、スパース SOURCE ファイルは大まかなヒューリスティックによって検出され、対応する DEST ファイルもスパースにされます。
したがって、ヒューリスティックが失敗した場合は、cp
穴のないプレーン ファイルが作成されます。その場合、コピーのディスク使用量はソースのディスク使用量よりも大きくなりますが、見かけのファイル サイズと内容は同じである必要があります (試してみてくださいcmp
)。
stat
ファイルの見かけのサイズとディスク使用量 (さらに多くの情報) の両方を確認するために使用します。
$ dd if=/dev/zero of=./sparse bs=1 count=1 seek=10240000
1+0 records in
1+0 records out
1 byte (1 B) copied, 1.4101e-05 s, 70.9 kB/s
$ cp sparse copy1
$ cp --sparse=never sparse copy2
$ ll
-rw-r--r-- 1 me users 10240001 Apr 28 17:59 copy1
-rw-r--r-- 1 me users 10240001 Apr 28 18:00 copy2
-rw-r--r-- 1 me users 10240001 Apr 28 17:59 sparse
$ du sparse copy*
4 sparse
4 copy1
10004 copy2
$ stat sparse copy*
File: `sparse'
Size: 10240001 Blocks: 8 IO Block: 4096 regular file
...
File: `copy1'
Size: 10240001 Blocks: 8 IO Block: 4096 regular file
...
File: `copy2'
Size: 10240001 Blocks: 20008 IO Block: 4096 regular file
$ cmp sparse copy1 && echo identical
identical
$ cmp sparse copy2 && echo identical
identical