[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Binärdatei zerschneiden - wie?



Matthias Böttcher schrieb:
> Am 14. Januar 2013 12:02 schrieb Andre Tann <atann@alphasrv.net>:
>> Matthias Böttcher, Montag, 14. Januar 2013:
>>
>>>    dd if=/dev/cciss/c0d0 bs=1 skip=73372631000 of=/tmp/datei
>>> gibt mir die letzen 40 Byte meiner Festplatte (68 GiB).
>>>
>>>    dd if=/dev/cciss/c0d0 bs=1 count=2 of=/tmp/datei2
>>> gibt mir die ersten zwei Bytes meiner Festplatte.
>>>
>>>    dd if=/dev/cciss/c0d0 bs=1 skip=2 count=2 of=/tmp/datei3
>>> gibt mir die Bytes 3 und 4 meiner Festplatte.
>>>
>>> Ist es das, was du willst?
>>
>> Fast. Wie ziehst Du die ersten 4 GB der Festplatte?
> 
> mit 4 GB = 4 * 1000^3
>    dd if=/dev/stick of=image2 bs=1 count=$(( 4000000000 ))
> 
> mit 4 GiB = 4 * 1024^3
>    dd if=/dev/stick of=image2 bs=1 count=$(( 4 * 1024 * 1024 * 1024 ))
> 
> oder was du wolltest, die ersten 4374318134 Bytes:
>    dd if=/dev/stick of=image2 bs=1 count=4374318134
> 
> 
> 
>>> Bei "dd if=/dev/urandom ..." habe schon die merkwürdigsten Dinge
>>> erlebt, ist IMHO als Test nicht verwendbar.
>>
>> Hm, außer daß die Prozessorlast ziemlich ansteigt hab ich noch nix
>> bemerkt...
> 
> Aus meiner Erinnerung (ganz grob):
> - das Produkt aus den angegebenen Parametern "bs= ... count=..."
> stimmte nicht mit den tatsächlich kopierten Daten (Ausgabe von dd auf
> stderr) überein
> - dd verwendete beim kopieren eine andere block size, als ich mit angegeben habe
> Ich kann das jetzt nicht reproduzieren.
> 
Nun wahrscheinlich ist die Maximale Blockgröße von dd auf 2 GByte
begrenzt, weil Sicherheit dd um ein Block zu lesen einfach read(2) mit
der Blockgröße als count Argument aufruft.

ssize_t read(int fd,void *buf,size_t count);

size_t und ssize_t sind long.
long ist, zumindest bei einem 32-Bit-System, eine 32-Bitzahl mit
Vorzeichen als maximal 2^31=2147483648 -> 2 GByte.

Wie es bei der 64-Bit Version aussieht weiß ich nicht. Aber dafür reicht
nicht nur eine 64Bit-CPU, sonder das System (zumindest glibc+dd) müssen
64Bit-Versionen sein.
-- 
Gruß Jochen


Reply to: