Mám prázdný soubor (jsou v něm jen nuly) o velikosti 9,0KB a potřebuji do něj zapsat další soubor (o velikosti 1,1KB), ale první soubor nesmí ztratit svou velikost ani zbytek obsahu. Pokud je tedy celý soubor 00000000000000...
Nyní do něj musím napsat druhý soubor a nechat nuly tak, jak jsou. Zkoušel jsem použít dd
, ale neuspěl jsem – velikost souboru se mění.
dd if=out/one.img of=out/go.img
Ví někdo, jak to mohu udělat?
Přijatá odpověď:
Chcete-li přepsat začátek cílového souboru bez jeho zkrácení, zadejte notrunc
převodní směrnice:
$ dd if=out/one.img of=out/go.img conv=notrunc
Pokud chcete data zdrojového souboru připojit do cíle, můžete to udělat pomocí seek
směrnice:
$ dd if=out/one.img of=out/go.img bs=1k seek=9
To říká dd
velikost bloku je 1 kiB, takže seek
posune se o 9 kB dopředu, než provede zápis.
Obě formy můžete také kombinovat. Chcete-li například přepsat druhou 1 kiB blok v souboru s 1 kiB zdrojem:
$ dd if=out/one.img of=out/go.img bs=1k seek=9 conv=notrunc
To znamená, že přeskočí první 1 kiB výstupního souboru, přepíše data, která tam najde, daty ze vstupního souboru, a poté zavře výstup, aniž by jej nejprve ořízl.