คำสั่ง dd ทำอะไรกันแน่


8

ไม่กี่วันที่ผ่านมาฉันดีใจที่พบว่าไม่ใช่เรื่องยากที่จะเขียนภาพ iso ไปยัง USB โดยปราศจากความช่วยเหลือของโปรแกรมของบุคคลที่สามที่ออกแบบมาอย่างชัดเจน แต่คำสั่ง (หรือโปรแกรม) ที่สนับสนุนสิ่งนี้ - dd - ไขปริศนาให้ฉัน

ตามวิกิพีเดียมันถูกออกแบบมาเพื่อคัดลอกและแปลงข้อมูลดิบ แต่โดยสุจริตฉันพบคำจำกัดความที่ชัดเจนและคลุมเครือ ฉันเข้าใจว่ามันช่วยให้คุณสามารถเปลี่ยนข้อมูลหนึ่งชิ้นเป็นอีกส่วนหนึ่งได้ แต่จะเกิดอะไรขึ้นถ้าไฟล์เอาต์พุตที่ระบุมีขนาดเล็กเกินไปที่จะกลายเป็นไฟล์อินพุตที่ระบุได้

dd if=giant_file of=tiny_file

นอกจากนี้เมื่อฉันสร้าง USB ที่สามารถบู๊ตได้พร้อมไฟล์ภาพ USB จะได้รับชนิดของระบบไฟล์ของisofsแต่ถ้าฉันเขียนไฟล์เก็บถาวรหรือเรียกใช้งานไดรฟ์มันจะยังคงประเภทระบบไฟล์ปกติ

การชี้แจงสิ่งที่คำสั่ง dd ทำจริง ๆ หรือวิธีการทำงานในระดับต่ำกว่าจะได้รับการชื่นชมมาก ขอบคุณ!

คำตอบ:


8

ddทำสำเนาไบต์ต่อไบต์จากแหล่งไปยังปลายทางด้วยการแปลงตัวเลือกที่ระบุโดยconvอาร์กิวเมนต์ จะดำเนินการอ่านและเขียนตามที่ระบุโดย*bsและ*flagตัวเลือกที่มีช่วงที่กำหนดโดยcount, skipและseekตัวเลือก

จะเกิดอะไรขึ้นถ้าไฟล์เอาต์พุตที่ระบุมีขนาดเล็กเกินกว่าจะแปลงเป็นไฟล์อินพุตที่ระบุได้

หากofมีขนาดเล็กเกินไปที่จะเก็บifข้อมูลจะถูกตัดให้พอดี โปรดทราบว่าหากofเป็นไฟล์ปกติก็จะถูกเขียนทับ


1
ofถูกเขียนทับแม้ว่าจะไม่ใช่ไฟล์ - นี่เป็นวิธีที่ดีมากในการทำลายพาร์ทิชัน / ไดรฟ์! นั่นเป็นเหตุผลที่สำคัญมากที่จะต้องตรวจสอบอีกสองเท่าและอาจตรวจสอบจุดหมายปลายทางว่าเป็นไดรฟ์ / พาร์ติชันเพื่อให้แน่ใจว่าคุณมีที่ถูกต้อง
Bob

1
ในทางเทคนิคแล้วมันเขียนลงในวัตถุแทนที่จะเขียนทับมัน
Ignacio Vazquez-Abrams

ขอบคุณสำหรับคำตอบ. จะทำอย่างไรถ้าคุณไม่มีข้อโต้แย้งใด ๆ แต่ทำสิ่งที่ชอบdd if=executable of=archive.tarสมมติว่ามันมีขนาดเท่ากัน ไฟล์เก็บถาวรจะถูกแปลงอย่างไม่มีที่ติไปเป็นไฟล์ปฏิบัติการหรือไม่?
ICoffeeConsumer

1
มันจะทำสำเนาไบต์ต่อไบต์จากexecutableถึงarchive.tar512 ไบต์ในเวลา มันจะไม่เปลี่ยนไบนารีเป็นที่เก็บถาวร
Ignacio Vazquez-Abrams

5

ฉันจะไม่พยายามสรุปสิ่งที่อยู่ในลิงค์เหล่านี้ แต่คุณอาจพบว่ามีประโยชน์ (หรือมากเกินไปข้อมูล ) ... พวกเขามาจากUnix & Linux (stackexchange)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.