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

Я использую оболочку Bash и хотел бы передать из команды openssl rand -base64 1000 в команду dd такие как dd if={output of openssl} of="sample.txt bs=1G count=1, Я думаю, что могу использовать переменные, но я не уверен, как лучше это сделать. Причина, по которой я хотел бы создать файл, состоит в том, что я хотел бы файл 1 Гб со случайным текстом.

7 ответов

Решение

if= не требуется, вы можете передать что-то в dd вместо:

something... | dd of=sample.txt bs=1G count=1

Это не было бы полезно здесь, так как openssl rand требует указания количества байтов в любом случае. Так что вам на самом деле не нужно dd - это будет работать:

openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))

1 гигабайт обычно составляет 230 байтов (хотя вы можете использовать 10**9 вместо 109 байт). * 3/4 part учитывает накладные расходы Base64, делая кодированный вывод 1 ГБ.

В качестве альтернативы, вы можете использовать /dev/urandom, но это будет немного медленнее, чем OpenSSL:

dd if=/dev/urandom of=sample.txt bs=1G count=1

Лично я бы использовал bs=64M count=16 или похожие:

dd if=/dev/urandom of=sample.txt bs=64M count=16

Создайте файл случайного содержимого размером 1GB.bin:

dd if = / dev / urandom of = 1GB.bin bs = 64M count = 16 iflag = fullblock

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

      truncate --size 1G foo
shred --iterations 1 foo

Это также более удобно, потому что вы можете просто указать размер напрямую.

Поскольку ваша цель — создать файл размером 1 ГБ со случайным содержимым, вы также можете использоватьyesкоманда вместоdd:

      yes [text or string] | head -c [size of file] > [name of file]

Пример использования:

      yes this is test file | head -c 100KB > test.file

Если вы хотите точно 1 ГБ, то вы можете использовать следующее:

openssl rand -out $ testfile -base64 792917038; truncate -s-1 $ testfile

Команда openssl делает файл ровно на 1 байт слишком большим. Команда усечения обрезает этот байт.

Вы можете настроить для этого bash-скрипт, как здесь. Убедитесь, что вы установили команду «pwgen»…:

#!/бин/баш

коснитесь шифра-01.txt

pwgen -sy 1024512 1024 >> шифр-01.txt

... это завершено, и создается файл со случайным размером текста в 1 ГБ. На компьютере с 4 ядрами это занимает от десяти до четырнадцати минут. Чтение этого файла размером 1 ГБ с катом -A занимает около двух с половиной минут.

Попробуйте этот скрипт.

#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1

Этот скрипт может работать до тех пор, пока вы не возражаете против использования /dev/random,

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"
Другие вопросы по тегам