Erstellen Sie eine Datei beliebiger Größe mit zufälligen Daten in Windows

Ich suche nach einer Anwendung, die eine Datei beliebiger Größe erstellt, die mit pseudozufälligen Daten gefüllt ist.

Muss in der Lage sein, Dateien mit einer Größe von mindestens 1 GB zu erstellen (größer ist besser).

Die Anwendung muss innerhalb von funktionieren , kann aber eine haben oder ein Befehlszeilen-Tool- sein .

Die Daten müssen nicht wirklich zufällig, sondern nur pseudozufällig sein.

Die Software muss sein .

Ich bevorzuge und Software, aber beides ist keine Voraussetzung.

Hinweis : Windows 7 SP1 ist die niedrigste Version von Windows, die unterstützt werden muss.

Sie könnten dann das integrierte wsh verwenden, um dies zu skripten, aber rdfc ist wahrscheinlich einfacher (es sei denn, Sie haben Python installiert).
Beachten Sie, dass Geschwindigkeit ein wichtiger Aspekt ist, der bei dieser Art von Werkzeug berücksichtigt werden muss. Ich habe die Lösung nicht mit Python getestet, aber ich habe schnell ein einfaches PowerShell-Skript zusammengestellt, und die Leistung war selbst für eine 1-MB-Datei schrecklich. RDFC und dd sind sehr schnell.
mguassa, PowerShell ist schnell, wenn Sie etwas wie hier vorgeschlagen verwenden: stackoverflow.com/questions/49835860/…

Antworten (7)

Sie können den Random Data File Creator (RDFC) verwenden.

Random Data File Creator, kurz RDFC, ist eine Konsolenanwendung für Microsoft Windows, mit der Binärdateien beliebiger Größe erstellt werden können, die mit Zufallszahlen gefüllt sind. So können beispielsweise Entwickler sehr große Dateien (z. B. 1 TB) erstellen, um zu testen, wie ihre eigene Anwendung damit umgeht.

Hier ist ein Test, den ich gerade unter Windows 10 ausgeführt habe, um eine 100-MB-Datei zu erstellen:

rdfc file.bin 100 MB

RDFC-Test

Die Anwendung ist Freeware und portabel (es erfordert keine Installation).

Macht den Job mit 10 MB/s, im Grunde unbrauchbar.
Ich kann bestätigen, was Vlastimil Ovčáčík sagt: RDFC ist langsam. In meinem Fall 3,70 MB/s beim Erstellen einer 100-MB-Datei. Getestet mit Microsoft Windows 10.

Sie können Dummy File Creator verwenden :

  • Kostenlos für Bildungszwecke und den nichtkommerziellen persönlichen Gebrauch
  • tragbar
  • Microsoft Windows (erfordert Microsoft .NET Framework 3.5)
  • GUI und CLI

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

  • Option zum Generieren einer Datei mit zufälligem Inhalt. True Random in v1.1, aber nicht in v1.2:

Dummy File Creator 1.2 schreibt zufällige Bytes im Bereich von 0 bis 255. Im Gegensatz zur vorherigen Version, die echte zufällige Dateiinhalte generiert, verwendet Dummy File Creator 1.2 einen anderen Ansatz bei der zufälligen Inhaltsgenerierung, um die Leistung der zufälligen Inhaltsgenerierung zu steigern. Dummy File Creator generiert jetzt 4 MB zufällige Daten und verwendet dieselben Daten wieder, indem er nur einige Bytes an zufälligen Stellen für jeden nachfolgenden Schreibvorgang ändert. Das Ergebnis besiegt zwar immer noch die gesamte von uns getestete Komprimierungssoftware (dh eine größere komprimierte Datei als die Originalgröße), aber es ist immer noch möglich, diesen pseudozufälligen Inhalt zu komprimieren, wenn ein speziell entwickelter Komprimierungsalgorithmus auf Dummy File Creator abzielt (sehr unwahrscheinlich ) wird genutzt. Um einen solchen Algorithmus zu entwerfen, muss er Wörterbuchwörter mit einer Länge im Bereich von 1 bis 4.194.303 Bytes verwenden.

Das beste Tool, das ich je gesehen habe, als wäre es enorm schnell!

dd für Windows ist portabel und Open Source .

Es ist die Windows-Version des beliebten Dienstprogramms dd für Unix .

Hier ist ein Beispiel für die Erstellung einer 100-MB-Datei:

dd bs=100M count=1 if=/dev/random of=C:\tmp\file.dat --progress

dd-Demo

Ich habe Version 0.5 unter Windows 10 verwendet.

Python ist kostenlos, kostenlos & Open Source und plattformübergreifend und kann als Skript oder interaktiv verwendet werden - je nach Art der zufälligen Inhalte, die Sie benötigen, ist es so einfach wie:

from random import randint

desired_size = 1024*1024*1024 # 1 GByte
with open('RandomData.dat', 'wb') as outfile: # Open for binary output
    for x in xrange(desired_size):
       outfile.write(chr(randint(0,255))) # Write a random byte
print 'Done.'

Sie können das Obige natürlich erweitern, um den Dateinamen und die gewünschte Größe abzufragen oder auf der Befehlszeile zu erhalten, den Bereich einzuschränken oder zufälligen Text auszugeben usw.

Ich möchte mir dafür keine 6 Codezeilen merken.
@VlastimilOvčáčík: Sie können das Erledigte immer überspringen und die gewünschte Größe direkt in den xrange einfügen, was sie auf 4 Zeilen reduzieren würde, wenn Ihr Gedächtnis ein Problem ist - :-)

In Python 3, um 25 Dateien mit jeweils 10 GB zu generieren:

import os
desired_size = 1024*1024*1024*10 # 10 GBytes
desired_number_of_files = 25
for file_number in range(desired_number_of_files):
    filename = 'output_file{0:04d}.dat'.format(file_number)
    print('filename: {0}'.format(filename))
    with open(filename, 'wb') as fout: fout.write(os.urandom(desired_size))
print('Done.')

Die Zeile, die die Daten generiert (dh die Zeile mit urandom) stammt von Jon Clements auf Creating random binary files . Falls Sie sich fragen: Was ist der Unterschied zwischen os.urandom() und random? .

Die Geschwindigkeit auf meinem Computer (Microsoft Windows 10) beträgt etwa 250 MB/Sekunde.

WARNUNG: Um eine 10-GB-Datei zu generieren, benötigt dieses Snippet 10 GB RAM, da es zuerst zufällige Zeichenfolgen in den Speicher puffert.
@ZaarHai Danke für das Feedback, guter Punkt, ich erinnere mich nicht an das Speicherverhalten. Wenn das ein Problem ist, könnte man vielleicht einige der Spülideen hinzufügen, die in Wie oft löscht Python eine Datei? .
Es geht nicht um die Spülung. os.urandom(desired_size)generiert zuerst eine 10 GiB lange Zeichenfolge, die RAM benötigt. Dann übergibst du es an write(). Sie müssen diese große Zeichenfolge in Blöcken generieren.
@ZaarHai danke, verstanden, sorry, ich hatte den Code zu schnell gelesen, ich habe vergessen, dass die Schleife für verschiedene Dateien war, ich dachte, alle Iterationen sollten in dieselbe Datei schreiben

Cygwin .

Es handelt sich praktisch um die üblichen Befehlszeilen-Unix/Linux-Tools, die auf Windows portiert wurden.

dd if=/dev/random of=file.img bs=1048576 count=10240

... oder so, funktioniert auch hier, wie in der hervorragenden Antwort von @mguassa.

Ich wollte mir das Projekt genau ansehen. Danke Peter.

Windows verfügt über einen integrierten Befehl (funktioniert bei einer Neuinstallation ohne Software von Drittanbietern, muss jedoch als Administrator ausgeführt werden)

fsutil file createnew bigfile.out 10737418240

Erläuterung der Option: bigfile.out - die Datei, die erstellt wird (kann den vollständigen Pfad enthalten) 10737418240 - Dateigröße in Bytes (hier 10 GB)

Das Dienstprogramm ist gut - aber ich wäre überrascht, wenn es eine Datei mit zufälligen Daten erstellen würde. Ich denke, es erstellt eine Datei voller Nullen.
Michal, würde es Ihnen etwas ausmachen, das Dienstprogramm zu testen, um zu sehen, ob Peterhs Annahme wahr ist, und die Ergebnisse in Ihrer Antwort zu erläutern? Ich habe keinen Windows-Rechner zum Ausprobieren. Eine Dokumentation darüber wäre noch besser. Vielen Dank :-)