dd
เป็นหนึ่งในคำสั่งที่สำคัญที่สุดใน Linux ซึ่งส่วนใหญ่ใช้ในการสำรองฮาร์ดดิสก์และพาร์ติชั่น เมื่อใช้อย่างถูกต้อง dd สามารถเป็นเครื่องมือที่มีประสิทธิภาพสำหรับการเขียนข้อมูลจากพาร์ติชั่นหนึ่งไปยังอีกพาร์ติชั่นหนึ่ง และทำงานต่างๆ กับไฟล์ ต่อไปนี้เราจะแสดงวิธีนำคำสั่ง dd ไปใช้ให้เกิดประโยชน์
เรื่องราวของ dd
คำสั่งนี้ได้รับการพัฒนาขึ้นที่ AT&T Bell Laboratories ในปี 1970 โดยนักวิทยาศาสตร์คอมพิวเตอร์ชื่อ Ken Thompson ได้รับการพัฒนาสำหรับระบบที่ใช้ Unix และได้รับเลือกให้อ้างอิงถึงคำสั่งที่พบใน Job Control Language ของ IBM ซึ่งเรียกว่า "DD" สามารถสังเกตได้ว่าไวยากรณ์ของคำสั่งใกล้เคียงกับคำสั่งในภาษาการควบคุมงาน
เดิมคำสั่งนี้ได้รับการออกแบบให้เป็นยูทิลิตี้ในการแปลง ASCII เป็น EBCDIC และในทางกลับกัน มันถูกรวมเข้ากับรุ่น Unix ครั้งแรกในปี 1974 ด้วยการเปิดตัวระบบปฏิบัติการรุ่นที่ 5
dd ถูกเรียกว่า "disk destroyer" เป็นเรื่องตลกในชุมชน Unix เนื่องจากความสามารถในการทำลายข้อมูลบนฮาร์ดดิสก์เมื่อใช้อย่างไม่เหมาะสม
ตัวถูกดำเนินการพื้นฐาน
ตอนนี้คุณรู้เล็กน้อยเกี่ยวกับพื้นหลังของคำสั่งและความสามารถในการทำลายล้างของคำสั่งเมื่อใช้อย่างไม่ถูกต้อง ก็ถึงเวลาเรียนรู้วิธีใช้ประโยชน์จากทุกอย่างที่มีให้กับผู้ใช้ลีนุกซ์รุ่นต่างๆ
ขั้นแรก ดูคู่มือโดยใช้ --help
ธง:
dd --help
มีสองตัวถูกดำเนินการสำหรับคำสั่งที่ใช้บ่อยที่สุด คือ if
และ of
ซึ่งย่อมาจาก "input file" และ "output file" ตามลำดับ if
ตัวถูกดำเนินการใช้เพื่อเป็นตัวแทนของตำแหน่งต้นทางในขณะที่ of
ตัวถูกดำเนินการใช้เพื่อแสดงตำแหน่งที่คุณต้องการบันทึกข้อมูลจากตำแหน่งอินพุต
dd if=<input file> of=<output file>
ตำแหน่งต้นทางและเอาต์พุตที่พบบ่อยที่สุด ได้แก่ ฮาร์ดดิสก์ พาร์ติชั่น และอิมเมจของดิสก์
ก่อนใช้คำสั่ง การใช้ fdisk
. อาจเป็นประโยชน์ ยูทิลิตี้เพื่อดูพาร์ติชั่นในระบบของคุณ สามารถทำได้ง่ายๆ โดยใช้คำสั่ง -l
ธง:
sudo fdisk -l
ในกรณีนี้ if
ใช้เพื่อเป็นตัวแทนของไดรฟ์ “/dev/sda” และ of
หมายถึงไดรฟ์ “/dev/sdb” โดยที่ข้อมูลจาก “/dev/sda” จะถูกบันทึกไปที่:
dd if=/dev/sda of=/dev/sdb
การสร้างดิสก์อิมเมจ
กรณีการใช้งานที่ดีที่สุดกรณีหนึ่งสำหรับคำสั่งคือการสร้างภาพดิสก์ในรูปแบบไฟล์ ".img" สิ่งนี้มีประโยชน์อย่างยิ่งในการสำรองข้อมูลบนระบบที่ใช้ Linux ของคุณ และน่าจะเป็นวิธีที่เร็วและง่ายที่สุดในการสำรองข้อมูลฮาร์ดดิสก์ทั้งหมด
ตรรกะที่นี่เป็นหลักเดียวกันในกรณีนี้ด้วย if
ตัวถูกดำเนินการแทนไดรฟ์ “/dev/sda” และ of
ตัวถูกดำเนินการแทนไฟล์ “.img” ซึ่งข้อมูลจากฮาร์ดดิสก์จะถูกบันทึกไปที่:
dd if=/dev/sda of=example.img
การบันทึกภาพดิสก์ไปยังพาร์ติชั่น
การสร้างดิสก์อิมเมจด้วยคำสั่งนั้นค่อนข้างตรงไปตรงมา แต่กระบวนการนั้นกลับเป็นเวอร์ชันที่ตรงกันข้าม
ในสถานการณ์สมมตินี้ ไฟล์อิมเมจดิสก์ของเราทำหน้าที่เป็นไฟล์อินพุต และพาร์ติชั่นใหม่ของเราทำหน้าที่เป็นไฟล์เอาต์พุต ยูทิลิตีกำลังบันทึกข้อมูลจากอิมเมจดิสก์ของเราไปยังพาร์ติชั่น “/dev/sdb”:
dd if=example.img of=/dev/sdb
การสร้างอิมเมจดิสก์ที่บีบอัด
หากคุณสร้างภาพดิสก์ของฮาร์ดดิสก์ขนาดเต็ม คุณสามารถจินตนาการได้ว่าขนาดไฟล์ของภาพดิสก์สุดท้ายน่าจะค่อนข้างใหญ่ ด้วยเหตุนี้ ยูทิลิตี dd จึงมีคุณสมบัติที่สร้างอิมเมจดิสก์ที่บีบอัด
อิมเมจดิสก์ที่บีบอัดสามารถสร้างได้โดยใช้ไพพ์ |
สั่งการ. ในกรณีนี้ จะใช้เพื่อนำเนื้อหาของไฟล์อินพุตและดำเนินการ gzip
คำสั่งด้วย -c
ตั้งค่าสถานะ โดยมีเนื้อหาที่บรรจุเป็นไฟล์ “.gz”:
dd if=/dev/sda | gzip -c > image.gz
การระบุขนาดบล็อก
คุณยังสามารถเล่นด้วยความเร็วของการทำงานของคำสั่ง dd สามารถทำได้โดยใช้ bs
ตัวถูกดำเนินการ ซึ่งใช้แสดงขนาดบล็อก ขนาดบล็อกแสดงถึงจำนวนไบต์ dd ที่คัดลอกไปยังไฟล์เอาต์พุตในอินสแตนซ์เดียว มันถูกแสดงโดยใช้ทวีคูณของ 1024 ไบต์ และค่าเริ่มต้นถูกตั้งค่าเป็น 512 ไบต์ ยิ่งขนาดบล็อกสูงเท่าไร ข้อมูลก็จะยิ่งถูกบันทึกลงในไฟล์ที่ส่งออกได้เร็วเท่านั้น
ในกรณีนี้ เรากำลังตั้งค่าขนาดบล็อกเป็น 2048:
dd if=/dev/sda of=example.img bs=2048
ขนาดบล็อกสามารถระบุเป็นกิโลไบต์ได้:
dd if=/dev/sda of=example.img bs=2048K
การล้างฮาร์ดดิสก์
dd สามารถใช้ล้างข้อมูลบนฮาร์ดดิสก์ของคุณได้ ทำได้โดยการอ่านค่าศูนย์หรืออักขระสุ่มจาก “/dev/zero” หรือ “/dev/urandom” และบันทึกลงในฮาร์ดดิสก์/พาร์ติชั่น ซึ่งจะเขียนทับข้อมูลบนนั้น สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการให้แน่ใจว่าไม่สามารถดึงข้อมูลของคุณได้อย่างง่ายดายหลังจากที่คุณขายหรือกำจัดฮาร์ดดิสก์ของคุณแล้ว
การเขียนทับฮาร์ดดิสก์โดยใช้ศูนย์:
dd if=/dev/zero of=/dev/sdb
ขั้นตอนการเขียนทับสามารถทำได้โดยใช้อักขระสุ่ม:
dd if=/dev/urandom of=/dev/sdb
การสร้างไดรฟ์ USB ที่สามารถบู๊ตได้
การสร้างแฟลชไดรฟ์ USB ที่สามารถบู๊ตได้โดยใช้ไฟล์ “.iso” ด้วยคำสั่งนั้นง่ายมาก:
dd if=os.iso of=<USB drive location>
บทสรุป
พูดได้อย่างปลอดภัยว่าคำสั่ง dd ถือได้ว่าเป็น "มีด Swiss Army" เนื่องจากมีประโยชน์ในหลายพื้นที่และทุกอย่างที่เกี่ยวกับฮาร์ดไดรฟ์ พาร์ติชั่น และไฟล์อิมเมจดิสก์ ตราบใดที่คุณไม่ทำลายฮาร์ดดิสก์ เครื่องมือนี้จะเป็นเครื่องมือที่มีประสิทธิภาพและใช้งานง่ายสำหรับทุกอย่าง ตั้งแต่การล้างข้อมูลในฮาร์ดดิสก์หรือไดรฟ์ USB ไปจนถึงการสร้างข้อมูลสำรองที่บีบอัด