Я повторяю то, что я сказал в вопросе на github: вероятно, вы находитесь не в виртуальной папке, когда пытаетесь поставить метку. Тегирование работает только в виртуальной папке, поэтому оно не сработает в =INBOX
, но будет успешным в tag:inbox
.
du
не показывает размер в байтах, но (в этом случае )1024 -байт -блоков. Так что цифры на самом деле идентичны(264084 * 1024 = 270422016
)
truncate
создает разреженный файл при условии, что файловая система поддерживает такие вещи
/dev/zero
на самом деле создает бесконечные \0
байты, которые затем записываются в файл, а запись нулей занимает место, как и запись любого другого содержимого. Другим способом создания файла, который занимает место без фактической записи нулей , является использование fallocate
.
Вы можете использовать filefrag
для получения дополнительной информации о таких файлах.
$ timeout 1 cat /dev/zero > file1
$ truncate -s 270422016 file2
$ fallocate -l 270422016 file3
$ filefrag -e file1 file2 file3
Файл 1(cat /dev/zero
)полностью написан, а также оказался при этом фрагментированным:
Filesystem type is: 58465342
File size of file1 is 270422016 (66021 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 8175: 9983740.. 9991915: 8176:
1: 8176.. 32751: 11049359.. 11073934: 24576: 9991916:
2: 32752.. 54271: 11193265.. 11214784: 21520: 11073935:
3: 54272.. 62191: 11182601.. 11190520: 7920: 11214785:
4: 62192.. 70383: 11214785.. 11222976: 8192: 11190521: last,eof
file1: 5 extents found
Фрагментация зависит от того, сколько есть свободного места и откуда файловая система решила начать запись в файл, не зная, насколько большим он окажется в итоге.
Файл 2(truncate
)— это просто пустая оболочка, для него вообще не зарезервировано места, его размер просто указывается метаданными, а не физическими экстентами.
File size of file2 is 270422016 (66021 blocks of 4096 bytes)
file2: 0 extents found
Файл 3(fallocate
)выделен, но помечен как незаписанный. Таким образом, для него зарезервировано физическое пространство, и оно даже не фрагментировано (, так как файловой системе был заранее сообщен размер ). Чтение этого файла приведет к появлению нулей, хотя физически по этому адресу могут храниться другие данные. Это связано с тем, что мгновенное выделение файлов просто резервирует место, но не перезаписывает данные на диске.
File size of file3 is 270422016 (66021 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 66020: 10983338.. 11049358: 66021: last,unwritten,eof
file3: 1 extent found