Я тестирую плоский дизайн, который будет использоваться вместо sql db, он использует структуру вложенных каталогов с файлами. Сначала я думал хранить данные внутри файла, но это не более 40 знаков на файл, так зачем открывать файл, когда все можно прочитать по его имени .. но теперь я не могу узнать, что будет на самом деле разница в пространстве для хранения по сравнению с таблицей sql. Я пробовал du и find, и он всегда показывает только размеры каталогов и 0B для файлов ..
Есть ли способ узнать фактический размер файлов? Или хотя бы вручную их вычислили, или угадаете?
Не уверен, какую файловую систему использует мое облако, я думаю, ext4 .. ОС - ubuntu 14.04
РЕДАКТИРОВАТЬ:
Насколько я понял из ответов, единственное, что будет использовать дисковое пространство, - это сам каталог. Это минимум 4 Кбайт. В каждом каталоге должно быть около 300 пустых файлов. Если один индексный дескриптор потребляет минимум 256 ББ, это должно раздуть каталог до 76,8 КБ, но размер каталога по-прежнему составляет всего 4 КБ.
Еще я пытаюсь понять разницу между таблицей sql и этой плоской настройкой. Когда я казнил
SELECT pg_size_pretty(pg_total_relation_size('table_name'));
в таблице с 300 записями (вместо одной строки для имени было 5 полей - 6 с pk: 1x ForeignKey, 1xCharfield max 20 len, 2x FloatField, 1x IntegerField) в ответе был указан размер 16Kb. Это postgresql 9.3 и django 1.8.6. Может ли действительно быть разница в 60 Кб между хранением этих данных в таблице SQL и в имени пустого файла? Или каталог вообще не будет раздуваться инодами, и я сэкономлю 12 КБ?
Если вам интересно, почему я так много думаю о нескольких килобайтах, установка позже должна содержать до 100 тысяч пользователей с 100x300 этих пустых файлов или записей в БД ... так что это действительно вопрос ГБ данных .. :-)
ты можешь cd
в каталог и беги ls -lha
, тот, который называется .
это ваш локальный каталог. Имейте в виду, что этот подход потребует много inodes
РЕДАКТИРОВАТЬ 1:
Вы увидите, что файлы имеют размер 0B, но вы сможете увидеть, что локальная папка действительно увеличивается в размере по мере добавления файлов, проверьте .
каталог, в котором вы находитесь.
Macbook-Pro:/tmp/test$ ls -lha
total 0
drwxr-xr-x 6 DiegoVelez wheel 204B Oct 26 20:07 .
drwxrwxrwt 43 root wheel 1.4K Oct 27 09:33 ..
-rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file
-rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file2
-rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:06 file3
-rw-r--r-- 1 DiegoVelez wheel 0B Oct 26 20:07 file4
Если вы используете файл только для его имени, оставив его пустым, единственное, что имеет реальный размер, - это сам каталог.
Ключевым моментом для понимания является то, что каталог - это несколько особый вид файла - файл, который может быть выполнен (cd /dirname
), читать (ls /dirname
) и написано / изменено (touch /dirname/filename
и rm /dirname/filename
).
Вообще говоря, добавление файлов в каталог увеличивает занимаемое пространство, а удаление файлов уменьшает его. Однако, поскольку каталоги представляют собой «особый вид» файлов, файловые системы часто угрожают им особым поведением.
Для получения дополнительной информации вы можете прочитать Вот и Вот