Co dokładnie robi polecenie dd?

8

Kilka dni temu z przyjemnością dowiedziałem się, że napisanie obrazu ISO na USB nie jest trudne bez pomocy specjalnie zaprojektowanego programu innej firmy. Ale polecenie (lub program), które to ułatwia - dd - mnie zastanawia.

Według Wikipedii jest przeznaczony do kopiowania i konwertowania surowych danych, ale szczerze mówiąc, uważam tę definicję za bardzo jednoznaczną i niejasną. Rozumiem, że pozwala to zamienić jeden kawałek danych w inny, ale co się stanie, jeśli określony plik wyjściowy jest zbyt mały, aby mógł zostać przekształcony w określony plik wejściowy?

dd if=giant_file of=tiny_file

Ponadto, gdy tworzę bootowalny USB z plikiem obrazu, USB osiąga typ systemu plików isofs , ale jeśli napiszę archiwum lub plik wykonywalny na dysku, zachowuje swój zwykły typ systemu plików.

Wszelkie wyjaśnienia dotyczące tego, co naprawdę robi polecenie dd lub jak działa na niższym poziomie, byłyby bardzo mile widziane. Dzięki!

ICoffeeConsumer
źródło

Odpowiedzi:

8

ddwykonuje kopię bajt po bajcie ze źródła do miejsca docelowego, z opcjonalną konwersją określoną przez convargument. Wykonuje on czyta i pisze w sposób określony przez *bsi *flagopcji, z zakresu określonego przez count, skipi seekopcji.

co się stanie, jeśli określony plik wyjściowy jest zbyt mały, aby można go przekształcić w określony plik wejściowy?

Jeśli ofjest za mały, aby go pomieścić, ifdane są obcinane, aby pasowały. Pamiętaj, że jeśli ofjest to zwykły plik, jest on nadpisywany.

Ignacio Vazquez-Abrams
źródło
1
ofjest nadpisywany, nawet jeśli nie jest plikiem - to bardzo fajny sposób (przypadkowo?) zniszczyć partycję / dysk! Dlatego bardzo ważne jest, aby podwoić, a może potrójnie sprawdzić miejsce docelowe, jeśli jest to dysk / partycja, aby upewnić się, że masz właściwy.
Bob
1
Technicznie zapisuje się w obiekcie, a nie zastępuje go.
Ignacio Vazquez-Abrams
Dziękuję za odpowiedź. Co jeśli nie podasz żadnych argumentów, ale zrób coś takiego dd if=executable of=archive.tar, zakładając, że oba są tego samego rozmiaru. Czy archiwum zostanie bezbłędnie przekształcone w plik wykonywalny?
ICoffeeConsumer
1
Będzie wykonywać kopię bajt po bajcie od executabledo archive.tar512 bajtów naraz. Nie zamieni binarnego w archiwum.
Ignacio Vazquez-Abrams