คำสั่ง dd ตัวเลือก bs ที่ส่วนท้ายของดิสก์


10

ถ้าฉันจะใช้ddคำสั่งดังต่อไปนี้:

dd if=/dev/zero of=/dev/sdX bs=16M

จะเกิดอะไรขึ้นที่ส่วนท้ายของดิสก์ถ้าไม่ใช่จำนวน 16M ที่แน่นอน นั่นหมายความว่าส่วนที่เหลือสุดท้ายของดิสก์ไม่เป็นศูนย์หรือไม่?

ฉันสังเกตเห็นในhttps://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/เขาเขียนว่ารัฐบาลสหรัฐฯใช้

dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc

เป็นconv=notruncตัวเลือกวิธีการเพื่อให้แน่ใจว่าทุกไบต์สุดท้ายเช็ด?

dd 

คำตอบ:


12

อุปกรณ์ส่งออกทั้งหมดจะถูกลบออกไม่ว่าขนาดของมันจะเป็นหลายเท่าของขนาดบล็อกที่คุณส่งไปddหรือไม่

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

แทนการใช้ddและกังวลเกี่ยวกับว่าคุณกำลังใช้มันอย่างถูกต้อง (ตามที่มันเกิดขึ้นก็ทำงานในกรณีนี้โดยเฉพาะ แต่ก็มีความซับซ้อนและบางครั้งก็ไม่ได้ทำงาน ) ใช้เพียงcat

cat /dev/zero >/dev/sdX

แม้จะมีความเชื่อที่ได้รับความนิยมในเว็บ แต่ก็ไม่มีเวทย์มนตร์ddที่ทำให้มันเหมาะกว่าที่จะเขียนลงดิสก์ ความมหัศจรรย์อยู่ใน/devไฟล์ เครื่องมือใด ๆ ที่สามารถรับมือกับข้อมูลไบนารีเช่นใด ๆ ที่ทันสมัยcatหรือheadสามารถทำผลงานได้เช่นเดียวกับddถ้าคุณกำลังผ่านธงเช่นหรือseekskip

โปรดทราบว่าปัญหาที่ใช้ร่วมกันddและcatเป็นไปได้ว่าในการดำเนินการที่ประสบความสำเร็จพวกเขาจะเกิดข้อผิดพลาดกับ“ ไม่มีพื้นที่เหลือบนอุปกรณ์” (ENOSPC) หากคุณใส่ไว้ในสคริปต์คุณจะต้องตรวจสอบว่าข้อผิดพลาดคือ ENOSPC หรือใช้วิธีอื่น วิธีการน่าเชื่อถือมากขึ้นแรกคือการกำหนดขนาดของอุปกรณ์ (เช่นใช้/proc/partitionsภายใต้ Linux) headแล้วเขียนว่าตัวเลขทางขวาของไบต์ด้วยเครื่องมือดังกล่าวเป็น

size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX

8

ไม่มีปัญหา - ddเขียนไปยังจุดสิ้นสุดสุด ( No space left on device) ยกเว้นว่าไม่มีการป้อนข้อมูลถูก จำกัด โดยcount=xหรือมีข้อผิดพลาดอื่นเกิดขึ้น (เช่นเซ็กเตอร์ที่ไม่ดีสายเคเบิลหมัด ฯลฯ )

หากเขียนทับอุปกรณ์ทั้งหมดเป็นเป้าหมายของคุณshredจะใช้งานง่ายกว่า

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

หรือcryptsetupสำหรับข้อมูลสุ่มด้วยขั้นตอนการตรวจสอบ (ศูนย์ถูกเข้ารหัสเป็นข้อมูลแบบสุ่มข้อมูลแบบสุ่มจะถูกถอดรหัสกลับเป็นศูนย์)

หรือblkdiscardสำหรับ SSD

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

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