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

Jak stworzyć 1GB losowy plik w Linuksie?

Używam powłoki bash i chciałbym potokować z polecenia openssl rand -base64 1000 do polecenia dd takiego jak dd if={output of openssl} of="sample.txt bs=1G count=1. Wydaje mi się, że mogę używać zmiennych, ale nie jestem pewien jak to zrobić najlepiej. Powodem, dla którego chciałbym stworzyć ten plik jest to, że chciałbym plik 1GB z przypadkowym tekstem.

Odpowiedzi (4)

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

if= nie jest wymagane, możesz zamiast tego wprowadzić coś do dd:

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

Nie byłoby tu użyteczne, ponieważ openssl rand i tak wymaga podania liczby bajtów. Więc tak naprawdę nie potrzebujesz dd - to by zadziałało:

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

1 gigabajt to zazwyczaj 230 bajtów (choć możesz użyć 10**9 dla 109 bajtów). Część * 3/4 odpowiada za Base64, dzięki czemu zakodowane wyjście 1 GB.

Alternatywnie, mógłbyś użyć /dev/urandom, ale byłoby to trochę wolniejsze niż OpenSSL:

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

Osobiście użyłbym bs=64M count=16 lub podobnego:

dd if=/dev/urandom of=sample.txt bs=64M count=16
26
26
26
2015-05-21 14:52:41 +0000

Stwórz plik losowy zawartości 1GB.bin:

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

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

Jeśli chcesz WYŁĄCZNIE 1GB, możesz użyć następujących komend:

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

Komenda openssl czyni plik dokładnie o 1 bajt za duży. Komenda obcinająca odcina ten bajt.

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

Wypróbuj ten skrypt.

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

Ten skrypt może działać tak długo, jak długo nie masz nic przeciwko użyciu /dev/random.

#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"