Pour autant que je sache, il n'y a aucun moyen de dire dd
à l'aide de pad 0xFF
. Mais il existe une solution de contournement.
Commencez par créer un fichier de la longueur requise, renseigné avec 0xFF
:
$ dd if=/dev/zero ibs=1k count=100 | tr "\000" "\377" >paddedFile.bin
100+0 records in
200+0 records out
102400 bytes (102 kB) copied, 0,0114595 s, 8,9 MB/s
tr
est utilisé pour remplacer les zéros avec 0xFF
. tr
attend des arguments en octal. 0xFF
en octal est \377
.
Résultat:
$ hexdump -C paddedFile.bin
00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00019000
Ensuite, insérez le fichier d'entrée au début du fichier "padded":
$ dd if=inputFile.bin of=paddedFile.bin conv=notrunc
0+1 records in
0+1 records out
8 bytes (8 B) copied, 7,4311e-05 s, 108 kB/s
Notez le conv=notrunc
qui dit dd
de ne pas tronquer le fichier de sortie.
Exemple de fichier d'entrée:
$ hexdump -C inputFile.bin
00000000 66 6f 6f 0a 62 61 72 0a |foo.bar.|
00000008
Résultat:
$ hexdump -C paddedFile.bin
00000000 66 6f 6f 0a 62 61 72 0a ff ff ff ff ff ff ff ff |foo.bar.........|
00000010 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00019000
paddedFile.bin
est rempli avec osxc3 bf
. Je me demande pourquoi? edit: superuser.com/questions/1349494/…Une amélioration possible de la réponse de lesmana consiste à opérer le fichier en place. Cela pourrait être beaucoup plus rapide pour les fichiers d'entrée volumineux et conserverait également les fichiers clairsemés. Cependant, dans de nombreuses situations, vous ne souhaitez pas modifier votre fichier d'entrée et cette méthode sera donc inappropriée.
L'exemple suivant commence par un fichier d'entrée volumineux et fragmenté et le remplit jusqu'à une taille de 1 Go avec des caractères FF. Changez simplement
newsize
à votre valeur désirée. Comme vous pouvez le constater, ladd
partie ne prend qu’une fraction de seconde bien que le fichier soit très volumineux.la source