Apa sebenarnya yang dilakukan perintah dd?

8

Beberapa hari yang lalu saya senang mengetahui bahwa tidak terlalu sulit untuk menulis gambar iso ke USB tanpa bantuan program pihak ketiga yang secara eksplisit dirancang untuk melakukannya. Tetapi perintah (atau program) yang memfasilitasi ini - dd - membingungkan saya.

Menurut Wikipedia itu dirancang untuk menyalin dan mengonversi data mentah, tetapi jujur ​​saya menemukan definisi ini sangat samar-samar dan kabur. Saya mengerti bahwa ini memungkinkan Anda mengubah satu data menjadi yang lain, tetapi apa yang terjadi jika file output yang ditentukan terlalu kecil untuk diubah menjadi file input yang ditentukan?

dd if=giant_file of=tiny_file

Juga, ketika saya membuat USB yang dapat di-boot dengan file gambar, USB mencapai tipe filesystem isofs , tetapi jika saya menulis arsip atau dapat dieksekusi ke drive, itu tetap mempertahankan tipe sistem file yang biasa.

Klarifikasi apa saja yang benar-benar dilakukan perintah dd atau cara kerjanya pada level yang lebih rendah akan sangat dihargai. Terima kasih!

ICoffeeConsumer
sumber

Jawaban:

8

ddmelakukan salinan byte-by-byte dari sumber ke tujuan, dengan konversi opsional yang ditentukan oleh convargumen. Ia melakukan membaca dan menulis seperti yang ditentukan oleh *bsdan *flagpilihan, dengan kisaran yang ditetapkan oleh count, skipdan seekpilihan.

apa yang terjadi jika file output yang ditentukan terlalu kecil untuk diubah menjadi file input yang ditentukan?

Jika ofterlalu kecil ifuntuk dimuat maka data terpotong agar sesuai. Perhatikan bahwa jika ofmerupakan file biasa maka file tersebut akan ditimpa.

Ignacio Vazquez-Abrams
sumber
1
ofditimpa bahkan jika itu bukan file - ini adalah cara yang sangat bagus untuk (secara tidak sengaja?) menghancurkan partisi / drive! Itulah mengapa sangat penting untuk menggandakan dan mungkin memeriksa tiga kali tujuan jika itu adalah drive / partisi, untuk memastikan Anda memiliki yang benar.
Bob
1
Secara teknis ia menulis ke objek daripada menimpanya.
Ignacio Vazquez-Abrams
Terima kasih atas jawabannya. Bagaimana jika Anda tidak memasukkan argumen apa pun, tetapi lakukan sesuatu seperti dd if=executable of=archive.tar, dengan asumsi keduanya berukuran sama. Apakah arsip akan ditransformasikan dengan sempurna menjadi executable?
ICoffeeConsumer
1
Ini akan melakukan salinan byte-untuk-byte dari executableke archive.tar512 byte pada suatu waktu. Itu tidak akan mengubah biner menjadi arsip.
Ignacio Vazquez-Abrams