В целях тестирования мне нужно сгенерировать файл определенного размера (чтобы проверить лимит загрузки).
Что такое команда для создания файла определенного размера в Linux?
linux
command-line
Grundlefleck
источник
источник
Ответы:
Где
file_size
размер вашего тестового файла в байтахисточник
dd
имеет предел 2 ^ 32 для его значений, так , чтобы создать файл размером более 4 Гб, есть одна хитрость:dd if=/dev/zero of=test bs=1M count=<size in megabytes>
.Пожалуйста, современнее проще и быстрее. В Linux (выберите один)
Это необходимо , чтобы сказать , что
truncate
в файловой системе , поддерживающие разреженные файлы будут создать разреженный файл иfallocate
не будут. Разреженный файл - это файл, в котором единицы выделения, составляющие файл, фактически не выделяются до использования. Метаданные для файла , однако, будут занимать некоторое значительное пространство, но, вероятно, не где-то рядом с фактическим размером файла. Вам следует обратиться к ресурсам о разреженных файлах для получения дополнительной информации, поскольку у этого типа файлов есть свои преимущества и недостатки. Не разреженный файл имеет свои блоки (единицы размещения), выделенные заранее, что означает, что пространство зарезервировано настолько, насколько его видит файловая система. Такжеfallocate
ниtruncate
не будет устанавливать содержимое файла в указанное значение, какdd
вместо этого содержимое файла, выделенного сfallocate
илиtruncate
может быть любым значением корзины, которое существовало в выделенных единицах во время создания, и такое поведение может быть или не быть желательным. Этоdd
самый медленный способ, потому что он фактически записывает значение или порцию данных во весь файловый поток, как указано в параметрах командной строки.Это поведение может потенциально отличаться - в зависимости от используемой файловой системы и соответствия этой файловой системы какому-либо стандарту или спецификации. Поэтому рекомендуется проводить надлежащие исследования, чтобы убедиться, что используется соответствующий метод.
источник
truncate
. Это произвело файл нулевого размера, используя синтаксис выше. «Man-страница» дляfallocate
говорит, что файлы, которые он создает, полны пустых,space
а не данных. Похоже, что это было бы бесполезно для некоторых ожидаемых случаев, таких как «сколько времени занимает копирование файла 1G».brew install coreutils
. Это добавит г перед командой, так что вы должны запустить его так:gtruncate -s 10G foo
. Надеюсь это поможет!NTFS
разделе.Просто чтобы следить за постом Тома , вы также можете использовать dd для создания разреженных файлов:
Это создаст файл с «дырой» в большинстве юниксов - данные на самом деле не будут записываться на диск или занимать место, пока в него не будет записано что-то отличное от нуля.
источник
count=0
,bs * seek
становится размером файлаНа OSX (и Solaris, по-видимому)
mkfile
команда также доступна:Это делает файл размером 10 ГБ с именем "big_file". Нашел этот подход здесь.
источник
truncate
иfallocate
команды не доступны.dd
также работает, как описано выше, хотя этоm
для мегабайт, а неM
.Используйте эту команду:
Чтобы создать большой (пустой) файл, установите
$INPUT-FILE=/dev/zero
.Общий размер файла будет
$BLOCK-SIZE * $NUM-BLOCKS
.Новый файл будет создан
$OUTPUT-FILE
.источник
Вы можете сделать это программно:
Такой подход особенно полезен для последующего MMAP файла в память.
используйте следующую команду, чтобы убедиться, что файл имеет правильный размер:
Быть осторожен:
вероятно, напечатает 0, потому что он выделен как разреженный файл, если поддерживается вашей файловой системой.
см. также: человек 2 открыт и человек 2 урезан
источник
Вы могли бы сделать:
Где вы заменяете 100 на количество байтов, которое вы хотите записать.
источник
Некоторые из этих ответов вы используете
/dev/zero
в качестве источника ваших данных. Если скорость загрузки в вашей тестовой сети не самая лучшая, если ваше приложение выполняет сжатие, файл, заполненный нулями, сжимается очень хорошо. Используя эту команду для генерации файлаЯ мог бы сжать
upload_test
до 200 байтов. Таким образом, вы можете оказаться в ситуации, когда вы думаете, что загружаете файл размером 10 КБ, но на самом деле это будет намного меньше.Я предлагаю использовать
/dev/urandom
вместо/dev/zero
. Я не мог сжать вывод/dev/urandom
очень сильно.источник
/dev/zero
, так/dev/urandom
что хорошо.источник
Есть много ответов, но никто не объяснил, что еще можно сделать. Просматривая справочные страницы для dd , можно лучше указать размер файла.
Это создаст /tmp/zero_big_data_file.bin заполненный нулями, который имеет размер 20 мегабайт:
Это создаст /tmp/zero_1000bytes_data_file.bin заполненный нулями, который имеет размер 1000 байтов:
или
источник
Как команда оболочки:
источник
В результате будет сгенерирован текстовый файл размером 4 МБ со случайными символами в текущем каталоге и его именем «4mb.txt». Вы можете изменить параметры для создания разных размеров и имен.
источник
Используйте,
fallocate
если вы не хотите ждать диск.Пример:
Использование:
источник