J’ai un fichier binary abc.bin
512 octets de long, et j’ai besoin de générer un fichier d’octet de 1M (1024 x 1024 = 1048576) en ajoutant 0 (0x00) à l’ abc.bin
. Comment puis-je le faire avec l’utilitaire dd
?
Par exemple, abc.bin
a 512 octets de 0x01 (“11 … 11”), et je dois avoir un helloos.bin de 1048576 octets (“11 … 11000 … 000”); le 0 n’est pas “0”, mais 0x00 et le nombre de 0x00 est 1048576 – 512.
Vous pouvez dire à dd
de rechercher la position 1M dans le fichier, ce qui a pour effet de rendre sa taille au moins 1M:
dd if=/dev/null of=abc.bin obs=1M seek=1
Si vous souhaitez vous assurer que dd
ne s’étend que, ne tronque jamais le fichier, ajoutez conv=notrunc
:
dd if=/dev/null of=abc.bin obs=1M seek=1 conv=notrunc
Si vous êtes sur un système avec GNU coreutils (comme dans presque tous les systèmes Linux), vous pouvez utiliser la commande truncate
au lieu de dd
:
truncate --size=1M abc.bin
Si vous voulez être sûr que le fichier est seulement étendu, jamais tronqué:
truncate --size=\>1M abc.bin
Je suppose que vous voulez réellement allouer 1M de zéros sur le disque, pas seulement un fichier dont la longueur signalée est 1MiB et se lit comme des zéros.
dd if=/dev/zero count=2047 bs=512 >> abc.bin
Cette méthode fonctionne également:
dd if=/dev/zero of=helloos.bin bs=512 count=2048
abc
sur le fichier créé – dd of=helloos.bin conv=notrunc if=abc.bin
Sans l’option conv=notrunc
, je n’ai qu’un fichier de 512 octets. Je peux aussi utiliser seek=N
pour contrôler la position de départ en sautant N
blocs.