Você pode criar um arquivo tão grande ou tão pequeno quanto quiser - especialmente em um linux tmpfs.
df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 472K 12G 1% /tmp
Podemos apenas criar um arquivo esparso.
for cmd in \
'dd bs=1024k seek=20k of=' \
'ls -slh '
do eval "$cmd/tmp/file"
echo
done </dev/null
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000152051 s, 0.0 kB/s
0 -rw-r--r-- 1 mikeserv mikeserv 20G Dec 24 20:19 /tmp/file
Veja? Está usando 0 blocos de espaço em disco, mas seu tamanho aparente é de 20 gigabytes.
Você pode então apenas fdisk /tmp/file
. Acabei de criar uma tabela de partições nele. Aqui está fdisk -l
:
Disk /tmp/file: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x057d787a
Device Boot Start End Sectors Size Id Type
/tmp/file1 2048 20973567 20971520 10G 83 Linux
/tmp/file2 20973568 31459327 10485760 5G 5 Extended
/tmp/file3 31459328 41943039 10483712 5G 83 Linux
Depois que a tabela é escrita, ela usa um pouco de espaço pouco :
ls -lsh /tmp/file
8.0K -rw-r--r-- 1 mikeserv mikeserv 20G Dec 24 20:21 /tmp/file
Você não saberia, no entanto.
df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 480K 12G 1% /tmp
E você pode esparsamente estender um arquivo da mesma maneira:
for cmd in \
'dd bs=1024k seek=30k of=' \
'ls -slh ' 'fdisk -l '
do eval "$cmd/tmp/file"
echo
done </dev/null
0+0 records in
0+0 records out
0 bytes (0 B) copied, 9.8239e-05 s, 0.0 kB/s
8.0K -rw-r--r-- 1 mikeserv mikeserv 30G Dec 26 14:24 /tmp/file
Disk /tmp/file: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x057d787a
Device Boot Start End Sectors Size Id Type
/tmp/file1 2048 20973567 20971520 10G 83 Linux
/tmp/file2 20973568 31459327 10485760 5G 5 Extended
/tmp/file3 31459328 41943039 10483712 5G 83 Linux