файла Как создать файл с заданным размером в Linux?




создать файл определенного размера linux (11)

dd if=/dev/zero of=upload_test bs=file_size count=1

Где file_size - размер вашего тестового файла в байтах

Для тестирования я должен создать файл определенного размера (для проверки предела загрузки).

Что такое команда для создания файла определенного размера в Linux?


вы можете сделать:

[[email protected]:~]$ perl -e 'print "\0" x 100' > filename.ext

Если вы замените 100 на количество байтов, которые вы хотите записать.


Пожалуйста, современное проще и быстрее. В Linux (выберите один)

truncate -s 10G foo
fallocate -l 5G bar

Нужно сказать, что truncate в файловой системе, поддерживающей разреженные файлы, создаст разреженный файл, а fallocate - нет. Редкий файл - это тот, где единицы распределения, составляющие файл, фактически не распределяются до использования. Метаданные для файла , однако, занимают некоторое значительное пространство, но, вероятно, нет, где около фактического размера файла. Вы должны проконсультироваться с ресурсами о разреженных файлах для получения дополнительной информации, поскольку для этого типа файлов есть преимущества и недостатки. В незащищенном файле его блоки (блоки распределения) распределяются заранее, что означает, что пространство зарезервировано, насколько файловая система видит его. Также fallocate и truncate не будут устанавливать содержимое файла на указанное значение, например dd , вместо этого содержимое файла, выделенного с помощью fallocate или truncate может быть любым значением мусора, которое существовало в выделенных единицах во время создания, и это поведение может или не может желательно. dd является самым медленным, поскольку он фактически записывает значение или фрагмент данных во весь поток файлов, как указано в его параметрах командной строки.

Такое поведение потенциально может быть различным - в зависимости от используемой файловой системы и соответствия этой файловой системы любому стандарту или спецификации. Поэтому рекомендуется проводить надлежащие исследования для обеспечения использования соответствующего метода.


Используйте эту команду:

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

Чтобы создать большой (пустой) файл, установите $INPUT-FILE=/dev/zero .
Общий размер файла будет $BLOCK-SIZE * $NUM-BLOCKS .
Новый файл будет $OUTPUT-FILE .


В OSX (и, похоже, Solaris) команда mkfile доступна:

mkfile 10g big_file

Это делает файл размером 10 ГБ с именем «big_file». Здесь нашел этот подход here.


Чтобы следить за постом Tom's , вы можете использовать dd для создания разреженных файлов:

dd if=/dev/zero of=the_file bs=1 count=0 seek=12345

Это создаст файл с «дыркой» в нем в большинстве unixes - данные на самом деле не будут записаны на диск или заняты каким-либо пространством, пока в него не будет записано что-то ноль, кроме нуля.


Это сгенерирует текстовый файл 4 МБ со случайными символами в текущем каталоге и его имя «4mb.txt». Вы можете изменять параметры для генерации разных размеров и имен.

base64 /dev/urandom | head -c 4000000 > 4mb.txt

В некоторых из этих ответов вы используете /dev/zero для источника ваших данных. Если скорость загрузки тестовой сети, возможно, не самая лучшая идея, если ваше приложение делает какое-либо сжатие, файл, полный нулей, сжимает очень хорошо. Использование этой команды для генерации файла

 dd if=/dev/zero of=upload_test bs=10000 count=1

Я мог бы сжать upload_test до 200 байтов. Таким образом, вы можете поставить себя в ситуации, когда, по вашему мнению, вы загружаете файл 10 КБ, но на самом деле это будет намного меньше.

Я предлагаю использовать /dev/urandom вместо /dev/zero . Я вообще не мог сжимать вывод /dev/urandom .


Вы можете сделать это программно:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main() {
    int fd = creat("/tmp/foo.txt", 0644);
    ftruncate(fd, SIZE_IN_BYTES);
    close(fd);
    return 0;
}

Этот подход особенно полезен для последующего mmap файла в память.

используйте следующую команду, чтобы проверить, что файл имеет правильный размер:

# du -B1 --apparent-size /tmp/foo.txt

Быть осторожен:

# du /tmp/foo.txt

вероятно, будет печатать 0, потому что он выделяется как разреженный файл, если поддерживается вашей файловой системой.

Смотри также: мужчина 2 открытый и мужчина 2 усеченный


dd if=/dev/zero of=my_file.txt count=12345

Как команда оболочки:

< /dev/zero head -c 1048576 >  output




command-line