it-swarm.com.de

Datei einer bestimmten Größe generieren?

Ich möchte eine Datei mit dem Namen example.file. ich könnte benutzen

touch example.file

ich möchte jedoch, dass die Datei genau 24 MB groß ist. Ich habe die Manpage of Touch bereits überprüft, aber es gibt keinen solchen Parameter. Gibt es eine einfache Möglichkeit, Dateien einer bestimmten Größe zu generieren?

119
R_User

Sie können dd verwenden:

dd if=/dev/zero of=output.dat  bs=24M  count=1

oder

dd if=/dev/zero of=output.dat  bs=1M  count=24

oder auf dem Mac

dd if=/dev/zero of=output.dat  bs=1m  count=24
152
Paul92

Unter nicht eingebettetem Linux oder Cygwin (oder einem beliebigen System mit GNU coreutils) und FreeBSD:

truncate -s 24m example.file

Dadurch wird eine Datei mit Null-Bytes erstellt. Wenn die Datei bereits vorhanden und kleiner ist, wird sie mit Null-Bytes auf die angeforderte Größe erweitert. Wenn die Datei bereits vorhanden ist und größer ist, wird sie auf die angeforderte Größe abgeschnitten.

Die Null-Bytes belegen keinen Speicherplatz, die Datei ist eine Sparse-Datei .

Auf vielen Systemen erstellt head -c 24m </dev/zero >example.file Eine nicht spärliche Datei mit Null-Bytes. Wenn head auf Ihrem System keine Option -c Hat (dies ist üblich, aber nicht in POSIX), können Sie stattdessen dd bs=1024k count=24 </dev/zero >example.file Verwenden (dies ist POSIX-kompatibel).

Wenn Sie sich nicht für den Inhalt der Datei interessieren, ist dies viel schneller als die Verwendung von dd:

fallocate -l 24M filename

Natürlich dauert die Verwendung von dd für eine 24-MB-Datei auf einem modernen System keine Zeit, aber größere Dateien können merklich langsam sein.

31
SArcher

Sie können dd verwenden:

dd if =/dev/zero von = outputfile.out bs = 1024k count = 24

Oder für den Fall, dass Sie Solaris verwenden

mkfile 24m outputfile.out
14
BitsOfNix
FROM_NODE=N01;
echo; cd $MOUNT_PATH; pwd; ls -la; sleep 1; echo;
WHEN="$(date +%Y-%m-%d_%H-%M-%S)";
fallocate -l 10M $MOUNT_PATH/"$FROM_NODE"_"$WHEN".dump
ls -lha; echo;
0
Pascal Andy