หากว่า
dd if=/dev/zero of=somepartition bs=512
ยังเช็ดพาร์ทิชันหลังจากsomepartition
หรือหยุดในตอนท้ายของsomepartition
?
หากว่า
dd if=/dev/zero of=somepartition bs=512
ยังเช็ดพาร์ทิชันหลังจากsomepartition
หรือหยุดในตอนท้ายของsomepartition
?
คำตอบ:
dd
dd
เป็นเครื่องมือที่ทรงพลัง แต่อันตราย มันเป็นสิ่งที่คุณบอกให้ทำโดยไม่มีคำถาม ดังนั้นถ้าคุณบอกให้ลบรูปภาพครอบครัว ... และมันเป็นข้อผิดพลาดในการพิมพ์เล็กน้อย
แต่ถ้าคุณตรวจสอบและตรวจสอบอีกครั้งคุณสามารถใช้งานได้
dd if=/dev/zero of=somepartition bs=512
หรือฉันจะแนะนำ
dd if=/dev/zero of=/dev/sdxn bs=4096
โดยที่x
เป็นอักษรระบุไดรฟ์และn
เป็นหมายเลขพาร์ติชันและขนาดบล็อก 4096 ไบต์ทำให้กระบวนการเขียนเร็วขึ้น
เป็นสิ่งสำคัญที่คุณต้องเขียนลงในพาร์ติชันในกรณีนี้ หากคุณเขียนลงในไดรฟ์ทั้งหมด (ส่วนหัวไดรฟ์) /dev/sdx
ไดรฟ์ทั้งหมดจะถูกเขียนทับ แต่การเขียนไปยังพาร์ติชั่นจะถูกขัดจังหวะในตอนท้ายของพาร์ติชั่นและพาร์ติชั่นด้านหลังจะถูกเก็บรักษาไว้ ( ตอนนี้ฉันทดสอบบน pendrive USB ใน Lubuntu 16.04 LTS ดังนั้นฉันรู้ว่ามันใช้งานได้จริง)
มีข้อยกเว้นสำหรับพาร์ติชันเสริม (ซึ่งเป็นคอนเทนเนอร์สำหรับโลจิคัลพาร์ติชันเพื่อให้มีพาร์ติชันมากกว่าสี่ในตารางพาร์ติชัน MSDOS) นี่คือคำอธิบายในลิงค์ต่อไปนี้
ฉันสามารถสร้างอิมเมจของพาร์ติชั่น 'Extended' โดยใช้ dd ได้ไหม
แต่มีปัญหาอื่นเช่นกัน ฉันทดสอบคำสั่งของคุณในสภาพแวดล้อมการทดสอบและ dd อ่านเพียงหนึ่งกิโลไบต์ (1024 ไบต์) เมื่อฉันต้องการให้มันสร้างภาพของพาร์ติชันเสริม
ฉันได้ทดสอบตอนนี้บน pendrive USB ใน Lubuntu 16.04 LTS และสิ่งนี้ใช้ได้กับการเขียน (เช่นเดียวกับการอ่าน) เฉพาะ kibibyte แรกเท่านั้นที่ถูกเขียนทับ
ดังนั้นเพื่อสรุปการเขียนทับพาร์ติชันหลักและโลจิคัลพาร์ติชันทำงานตามคำอธิบายหลักในคำตอบนี้ แต่อย่าใช้วิธีนี้ในการเขียนทับพาร์ติชั่นเสริมเนื่องจาก kibibyte แรกเท่านั้นที่จะถูกเขียนทับ โลจิคัลพาร์ติชันของพาร์ติชันเสริมจะไม่พบผ่านตารางพาร์ติชันอีกต่อไป แต่ข้อมูลที่เก็บไว้ในพาร์ติชันนั้นยังคงอยู่ที่นั่น
dd
และมีความเสี่ยงเพื่อให้คุณระมัดระวังในการใช้งาน ขอให้โชคดี :-) โดยทั่วไปคุณควรสำรองไฟล์ทั้งหมดไว้เสมอซึ่งคุณไม่สามารถที่จะสูญเสียได้
เขียนไปยังอุปกรณ์พาร์ทิชันจะไม่เขียนนอกพาร์ทิชันที่มี dd หรือสิ่งอื่นใด คุณจะต้องใช้อุปกรณ์ wholedisk เพื่อให้มีผลกระทบภายนอกพาร์ทิชันเดียว
(Caveat: ยกเว้นว่าดิสก์ของคุณมีตารางพาร์ทิชันที่มีพาร์ทิชันที่ทับซ้อนกันซึ่งไม่ควรเกิดขึ้น)
ฉันคิดว่าคำถามของคุณอยู่บนพื้นฐานของความเข้าใจผิดขั้นพื้นฐานเกี่ยวกับวิธีการdd
(และในความเป็นจริงระบบปฏิบัติการ Unix-like ทั่วไป):
dd
สามารถพาร์ทิชันที่อยู่ติดกันไม่ได้เขียนทับเพียงเพราะdd
ไม่สามารถเขียนทับพาร์ทิชัน, ระยะเวลา
dd
เพียงแค่เขียนไปยังแฟ้ม แค่นั้นแหละ.
ทีนี้ถ้าคุณส่งdd
ไฟล์ซึ่งแทนหลายพาร์ติชั่นก็dd
จะเขียนทับไฟล์นั้นนั้น แต่ในกรณีนี้มันไม่ได้dd
เขียนผ่านจุดสิ้นสุดของพาร์ติชัน dd
จะยังคงเขียนจนถึงจุดสิ้นสุดของไฟล์และเฉพาะจนถึงจุดสิ้นสุดของไฟล์
แต่ถ้าคุณส่งdd
ไฟล์ซึ่งแสดงถึงพาร์ติชั่นเดียวเท่านั้นdd
จะไม่เขียนตอนท้ายของพาร์ติชั่นนี้ dd
อีกครั้งนี้มีอะไรจะทำอย่างไรกับ dd
เพียงแค่เขียนไปยังไฟล์ที่คุณบอกให้เขียน ความจริงที่ว่าไฟล์นี้หมายถึงพาร์ติชันเดียวคือ (ในกรณีนี้) มั่นใจโดยไดรเวอร์อุปกรณ์บล็อกในเคอร์เนล dd
ไม่มีอะไรเกี่ยวข้องกับเรื่องนั้น
ดังนั้นในระยะสั้น: dd
เขียนไปยังไฟล์ ไฟล์เหล่านั้นหมายถึงอะไรก็ไม่dd
ต้องกังวล dd
ไม่รู้อะไรเกี่ยวกับพาร์ติชัน
dd
สำหรับเขียนไปยังพาร์ติชันดิบ คุณสามารถเขียนลงไฟล์ได้เท่านั้น แน่นอนคุณสามารถเขียนไปยังไฟล์อุปกรณ์บล็อกซึ่งแสดงถึงพาร์ติชัน (เช่น/dev/sda1
) แต่คุณไม่สามารถเขียนไปยังพาร์ติชันดิบได้ และเนื่องจากคุณสามารถเขียนไปยังไฟล์ที่แทนพาร์ติชันได้เท่านั้นคุณไม่สามารถเขียนผ่านจุดสิ้นสุดของพาร์ติชันได้เนื่องจากไฟล์จะแสดงเฉพาะพาร์ติชันไม่ใช่พาร์ติชันและบิตจะผ่านจุดสิ้นสุด
/dev/sda
ในโปรแกรมแก้ไขข้อความและเปลี่ยนข้อมูลdd
ไม่แตกต่างจากโปรแกรมอื่น ๆ ในแง่ของความสามารถในการเข้าถึงพาร์ติชัน คำตอบที่ดีมาก!
มีสถานการณ์พิเศษที่อันตราย แต่หายากซึ่งสิ่งนี้อาจเกิดขึ้นได้แม้ว่าจะมีไดรเวอร์อุปกรณ์บล็อกแบบไม่บั๊กอยู่:
คุณต้องระวังด้วย dd ราวกับว่าคุณทำผิดพลาดคุณสามารถเขียนทับมากกว่าที่คุณเจรจาและมันก็ขึ้นอยู่กับสิ่งที่คุณใช้ dd สำหรับ (OP นั้นคลุมเครือในการใช้ dd และไวยากรณ์ที่แน่นอนของ dd คำสั่ง)
หากคุณระบุพาร์ติชันมันจะเขียนไปยังพาร์ติชันนั้นจนกว่าพาร์ติชันจะเต็ม
หากคุณทำผิดพลาดและทำให้ทั้งไดรฟ์ตัวอย่างเช่น = / dev / sda, dd จะเขียนไปยังไดรฟ์ทั้งหมดเริ่มต้นจนเสร็จสิ้นโดยไม่สนใจ (และเขียนทับ) ตารางพาร์ติชันของคุณ
นอกจากนี้คุณยังสามารถใช้เราในพาร์ติชันเพื่อเขียนทับไฟล์ที่ถูกลบ (ไฟล์ที่ถูกลบอาจยังคงอยู่ในพาร์ติชันและค้นพบโดยเครื่องมือการกู้คืนที่หลากหลายที่มีระดับความสำเร็จต่าง ๆ จนกว่าพวกเขาจะถูกเขียนทับในกรณีนี้คุณสามารถใช้ dd เขียนไปยังไฟล์
dd if=/dev/zero of=/path/to/mount_point/zero_file bs=4096
rm -f /path/to/mount_point/zero_file
อย่างไรก็ตามขึ้นอยู่กับสิ่งที่คุณกำลังทำคุณอาจต้องการใช้เครื่องมือสำรองเพื่อลบไฟล์อย่างปลอดภัย ดูวิธีลบไฟล์อย่างปลอดภัย สำหรับตัวเลือก
dd
ไม่ได้อยู่ในระดับต่ำ ในความเป็นจริงมากที่สุดของสิ่งที่คนไม่ใช้จะได้รับการทำเพียงแค่เดียวกันกับdd
cat
ในความcat
เป็นจริงจะเร็วกว่าเล็กน้อยเนื่องจากใช้บล็อกที่มีขนาดใหญ่กว่าการdd
ตั้งค่าเริ่มต้น รหัสระดับต่ำทั้งหมดอยู่ในเคอร์เนล และคนขับรถไม่ได้จริงๆดูแลถ้าคุณกำลังใช้หรือdd
cat
dd if=/dev/zero of=/dev/sda bs=512 count=1
หรือdd if=/dev/zero of=/dev/sda bs=512
เป็นตัวอย่าง ด้วยคำสั่งที่สองมันจะเขียนต่อไปและเติมทั้งดิสก์ "ละเว้น" พาร์ติชันตาราง หากคุณระบุพาร์ติชันdd if=/dev/zero of=/dev/sda1
มันจะไม่ไปไกลกว่าพาร์ติชัน เรียงลำดับของขึ้นอยู่กับสิ่งที่คุณต้องการจะทำอย่างไรกับวัน
of=somepartition
ดังนั้นกรณีที่คุณเขียนไปยังอุปกรณ์ดิสก์ทั้งหมดไม่ได้ใช้ dd
ไม่สามารถหลีกเลี่ยงข้อ จำกัด ของไดรเวอร์อุปกรณ์ได้
/dev/sda1
ถูกสร้างขึ้นโดยเคอร์เนลในลักษณะที่เป็นไปไม่ได้ที่จะเข้าถึงที่เก็บข้อมูลที่อยู่ติดกันผ่านทางพวกเขา (สมมติว่าตารางพาร์ติชั่นไม่เปลี่ยนแปลงหลังจากเคอร์เนลอ่านในครั้งสุดท้าย) หากคุณสามารถเข้าถึงที่เก็บข้อมูลที่อยู่ติดกันด้วยวิธีนี้จะถือว่าเป็นข้อบกพร่องอย่างมาก