임의의 데이터로 파일을 채우는 방법은 무엇입니까?

임의의 데이터로 파일을 채우는 방법은 무엇입니까?

새 파일을 만들고 1GB의 임의 데이터로 채우려면 어떻게 해야 합니까? 일부 소프트웨어를 테스트하려면 이것이 필요합니다.

나는 /dev/random또는 을 사용하는 것을 선호합니다 /dev/urandom.

답변1

대부분의 단일 머신에서:

head -c 1G </dev/urandom >myfile

접미사를 head이해하지 못하는 경우 바이트 크기를 지정할 수 있습니다.G

head -c 1073741824 </dev/urandom >myfile

head이 옵션을 이해하지 못한다면 ( -c일반적이지만 POSIX는 아닙니다. 아마도 OpenBSD를 사용하고 있을 것입니다):

dd bs=1024 count=1048576 </dev/urandom >myfile

/dev/randomLinux에서는 사용 하지 말고 /dev/urandom.

답변2

의사 난수 데이터가 충분하다고 가정 dd if=/dev/urandom of=target-file bs=1M count=1000하면 원하는 대로 작동합니다.

일(1)데이터 블록은 입력 파일에서 읽혀지고 출력 파일에 기록됩니다. 명령줄 언어는 약간 특이하지만 기본 사항을 숙지할 가치가 있는 정말 유용한 도구 중 하나입니다.

이 경우 if는 입력 파일이고, of는 출력 파일이고, bs는 "블록 크기"입니다. 저는 크기를 더 쉽게 설정하기 위해 GNU 확장을 사용합니다. ( ddGNU 확장이 없으면 1048576을 사용할 수도 있습니다. )는 읽고 쓸 블록 수입니다 count.ifof

/dev/urandom/dev/randomLinux에서는 실제 무작위 데이터가 소진되면 차단 대신 강력한 의사 무작위 데이터로 되돌아가기 때문에 더 나은 선택입니다 .

당신은 또한 살펴보고 싶을 수도 있습니다http://www.random.org/직접 생성하지 않고 임의의 데이터를 얻는 또 다른 방법입니다.

답변3

/dev/random//dev/urandom우수한 대안 사용 및/또는 사용암호화 방식으로안전한의사 난수 생성기(CSPRNG) openssl에서 제공합니다. 드물지만 필요한 경우에는 알고리즘과 암호화 방법을 선택할 수도 있습니다.

size=$( echo 1G | numfmt --from=iec )         # 1 G ==> 1073741824

openssl rand -out myfile "$size"

Base64가 필요한 경우:

openssl rand -base64 -out myfile "$size"

세부정보를 읽어보세요 man rand.

답변4

이 솔루션은 무작위를 사용하지 않지만 매뉴얼 페이지를 사용하여 많은 양의 데이터를 생성합니다. 그러나 이는 최대 크기를 보장하지 않으므로 cat필요한 크기를 얻기 위해 몇 초 동안 반복해야 할 수도 있습니다 .

man curl > /tmp/man-curl

또는 더 큰 크기가 필요한 경우,

for i in {1..10}; do man curl >> /tmp/man-curl; done

관련 정보