หากว่า
dd if=/dev/zero of=somepartition bs=512
ยังเช็ดพาร์ทิชันหลังจากsomepartitionหรือหยุดในตอนท้ายของsomepartition?
หากว่า
dd if=/dev/zero of=somepartition bs=512
ยังเช็ดพาร์ทิชันหลังจากsomepartitionหรือหยุดในตอนท้ายของsomepartition?
คำตอบ:
ddddเป็นเครื่องมือที่ทรงพลัง แต่อันตราย มันเป็นสิ่งที่คุณบอกให้ทำโดยไม่มีคำถาม ดังนั้นถ้าคุณบอกให้ลบรูปภาพครอบครัว ... และมันเป็นข้อผิดพลาดในการพิมพ์เล็กน้อย
แต่ถ้าคุณตรวจสอบและตรวจสอบอีกครั้งคุณสามารถใช้งานได้
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ถูกสร้างขึ้นโดยเคอร์เนลในลักษณะที่เป็นไปไม่ได้ที่จะเข้าถึงที่เก็บข้อมูลที่อยู่ติดกันผ่านทางพวกเขา (สมมติว่าตารางพาร์ติชั่นไม่เปลี่ยนแปลงหลังจากเคอร์เนลอ่านในครั้งสุดท้าย) หากคุณสามารถเข้าถึงที่เก็บข้อมูลที่อยู่ติดกันด้วยวิธีนี้จะถือว่าเป็นข้อบกพร่องอย่างมาก