Zu Testzwecken muss ich eine Datei einer bestimmten Größe generieren (um ein Upload-Limit zu testen).
Was ist ein Befehl zum Erstellen einer Datei einer bestimmten Größe unter Linux?
linux
command-line
Grundlefleck
quelle
quelle
Antworten:
Wo
file_size
ist die Größe Ihrer Testdatei in Bytes?quelle
dd
Die Werte sind auf 2 ^ 32 begrenzt. Um eine Datei mit mehr als 4 GB zu erstellen, gibt es einen Trick :dd if=/dev/zero of=test bs=1M count=<size in megabytes>
.Bitte, modern ist einfacher und schneller. Unter Linux (wählen Sie eine aus)
Es muss angegeben werden, dass
truncate
auf einem Dateisystem, das Sparse-Dateien unterstützt, eine Sparse-Datei erstellt wird undfallocate
nicht. Eine Datei mit geringer Dichte ist eine , wo die Zuordnungseinheiten, die die Datei bilden, werden nicht tatsächlich bis zur Verwendung zugeordnet. Die Meta-Daten für die Datei wird dauern jedoch einige viel Platz, aber wahrscheinlich nicht annähernd der tatsächlichen Größe der Datei. Weitere Informationen finden Sie in den Ressourcen zu Dateien mit geringer Dichte, da dieser Dateityp Vor- und Nachteile hat. Bei einer nicht spärlichen Datei werden die Blöcke (Zuordnungseinheiten) vorab zugewiesen, was bedeutet, dass der Speicherplatz für das Dateisystem reserviert ist. Auchfallocate
nochtruncate
wird der Inhalt der Datei nicht auf einen bestimmten Wert wie gesetztdd
Anstatt den Inhalt einer Datei zugeordnet mitfallocate
odertruncate
kann ein ungenutzter Wert sein, der in den zugeteilten Einheiten während der Erstellung und dieses Verhalten existiert nicht erwünscht sein oder auch nicht . Dasdd
ist die langsamste , weil es tatsächlich den Wert oder Teil der Daten auf die gesamte Datei - Stream schreibt wie mit seinen Befehlszeilenoptionen angegeben.Dieses Verhalten kann möglicherweise unterschiedlich sein - abhängig vom verwendeten Dateisystem und der Konformität dieses Dateisystems mit einem Standard oder einer Spezifikation. Daher wird empfohlen, angemessene Untersuchungen durchzuführen, um sicherzustellen, dass die geeignete Methode angewendet wird.
quelle
truncate
. Es wurde eine Datei mit der Größe Null unter Verwendung der obigen Syntax erstellt. Die 'Manpage' fürfallocate
besagt, dass die von ihr erstellten Dateienspace
eher leer als Daten sind. Es scheint, dass es für einige erwartete Fälle wie "Wie lange dauert das Kopieren einer 1G-Datei" nicht sinnvoll wäre.brew install coreutils
. Dadurch wird vor dem Befehl ein g eingefügt, sodass Sie es wie folgt ausführen müssen :gtruncate -s 10G foo
. Hoffe das hilft!NTFS
Partition nicht funktioniert .Um Toms Beitrag zu verfolgen , können Sie mit dd auch spärliche Dateien erstellen:
Dadurch wird bei den meisten Unixen eine Datei mit einem "Loch" erstellt. Die Daten werden erst dann auf die Festplatte geschrieben oder belegen Speicherplatz, wenn etwas anderes als Null darauf geschrieben wird.
quelle
count=0
,bs * seek
wird die DateigrößeUnter OSX (und anscheinend Solaris) ist der
mkfile
Befehl ebenfalls verfügbar:Dadurch wird eine 10-GB-Datei mit dem Namen "big_file" erstellt. Fand diesen Ansatz hier.
quelle
truncate
undfallocate
nicht verfügbar sind.dd
funktioniert auch wie oben beschrieben, obwohl esm
für Megabyte ist, nichtM
.Verwenden Sie diesen Befehl:
Um eine große (leere) Datei zu erstellen, setzen Sie
$INPUT-FILE=/dev/zero
.Die Gesamtgröße der Datei beträgt
$BLOCK-SIZE * $NUM-BLOCKS
.Neue Datei erstellt wird
$OUTPUT-FILE
.quelle
Sie können dies programmgesteuert tun:
Dieser Ansatz ist besonders nützlich , um anschließend mmap die Datei in den Speicher.
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Datei die richtige Größe hat:
Achtung:
wird wahrscheinlich 0 drucken, da es als Sparse-Datei zugewiesen wird, wenn es von Ihrem Dateisystem unterstützt wird.
siehe auch: Mann 2 offen und Mann 2 abgeschnitten
quelle
du könntest es tun:
Wo Sie 100 durch die Anzahl der Bytes ersetzen, die Sie schreiben möchten.
quelle
Einige dieser Antworten verwenden Sie
/dev/zero
als Quelle für Ihre Daten. Wenn Sie die Upload-Geschwindigkeit Ihres Netzwerks testen, ist dies möglicherweise nicht die beste Idee, wenn Ihre Anwendung eine Komprimierung durchführt. Eine Datei voller Nullen wird sehr gut komprimiert . Verwenden Sie diesen Befehl, um die Datei zu generierenIch könnte
upload_test
auf ungefähr 200 Bytes komprimieren . Sie könnten sich also in eine Situation versetzen, in der Sie denken, dass Sie eine 10-KB-Datei hochladen, aber es wäre tatsächlich viel weniger.Was ich vorschlage, ist
/dev/urandom
anstelle von/dev/zero
. Ich konnte die Ausgabe von überhaupt nicht/dev/urandom
sehr stark komprimieren .quelle
/dev/zero
, also/dev/urandom
ist es gut.quelle
Es gibt viele Antworten, aber keine hat gut erklärt, was noch getan werden kann. Wenn Sie in Manpages nach dd suchen , können Sie die Größe einer Datei besser angeben.
Dadurch wird /tmp/zero_big_data_file.bin erstellt, das mit Nullen gefüllt ist und eine Größe von 20 Megabyte hat:
Dadurch wird /tmp/zero_1000bytes_data_file.bin erstellt, das mit Nullen gefüllt ist und eine Größe von 1000 Bytes hat:
oder
quelle
Als Shell-Befehl:
quelle
Dadurch wird eine 4-MB-Textdatei mit zufälligen Zeichen im aktuellen Verzeichnis und dem Namen "4mb.txt" generiert. Sie können Parameter ändern, um verschiedene Größen und Namen zu generieren.
quelle
Verwenden
fallocate
Sie diese Option, wenn Sie nicht auf die Festplatte warten möchten.Beispiel:
Verwendung:
quelle