Как создать случайный файл размером 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"