2012-09-06 18:03:06 +0000 2012-09-06 18:03:06 +0000
91
91

Как создать случайный файл объемом 1GB в Linux?

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

Ответы (4)

139
139
139
2012-09-06 18:17:14 +0000

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

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

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

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

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

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

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

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

&00001

26
26
26
2015-05-21 14:52:41 +0000

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

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

2
2
2
2017-07-06 21:48:13 +0000

Если вы хотите EXACTLY 1GB, то можете использовать следующее:

openssl rand -out $testfile -base64 792917038; усеченный -s-1 $testfile

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

-1
-1
-1
2012-09-06 18:12:03 +0000

Попробуйте этот сценарий.

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

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

&00001.

Похожие вопросы

6
10
5
37
4