อะไรคือความแตกต่างระหว่าง sdelete -c และ -z?


24

ฉันได้เรียนรู้จากบทความนี้เพื่อใช้sdeleteเป็นขั้นตอนในการย่อขนาดไฟล์ VDI:

sdelete -c c:

แต่-c('พื้นที่ว่างที่สะอาด' ตามที่อธิบายไว้ในข้อความช่วยเหลือ) หมายความว่าอย่างไร มันเขียนพื้นที่ว่างที่มีศูนย์ใช่ไหม และสิ่งที่เกี่ยวกับ-z(พื้นที่ว่างเป็นศูนย์)? อะไรคือความแตกต่างระหว่าง sdelete -c และ -z?

แก้ไข

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

ดังนั้นดูเหมือนว่าจะ-zเขียนเลขศูนย์ลงในพื้นที่ว่างและ-cเขียนอย่างอื่น (บิตแบบสุ่ม)

คำตอบ:


21

ฉันคิดว่านี่เป็นข้อผิดพลาดทั่วไป บางทีตัวเลือก -z อาจไม่พร้อมใช้งานในรุ่นก่อนหน้า SDelete 1.61 พูดว่า

-z         Zero free space (good for virtual disk optimization)

โปรดทราบว่าการทำเช่นนี้จะขยายฮาร์ดดิสก์ของคุณเป็นขนาดเต็มก่อน เฉพาะในกระบวนการลดขนาดโดย VMWare มันจะเล็กลงอีกครั้ง

การทดสอบอย่างรวดเร็วในเครื่องของฉัน:

-z took 1:01 minutes
-c took 2:11 minutes

ซึ่งบ่งชี้ว่า -z เพียงเขียนเลขศูนย์ที่เรียบง่ายในขณะที่ -c เป็นเช็ดมาตรฐานทหาร DOD 5220.22-M ตามที่เขียนไว้ในเว็บไซต์ SDelete


มันจะไม่ขยายไฟล์หากซอฟต์แวร์นั้นค่อนข้างฉลาด แอพพลิเคชันเสมือนจริงส่วนใหญ่คือ ฉันเพิ่งลองใน VMware Fusion มันไม่ได้เพิ่มขนาดไฟล์เลย
Daniel B

1
VMWare Workstation Pro 12 ช่วยเพิ่มขนาดดิสก์ให้เต็มขนาดได้อย่างน่าเสียดาย
Lebenita

-c และ -z ได้รับการโฆษณาใน 1.51 อีกทางหนึ่ง (ไม่ว่าจะเป็นเพียงข้อผิดพลาดในคำอธิบายหรือฟังก์ชั่นก็ย้อนกลับฉันไม่ทราบ) วิธี 1.61 ทำให้รู้สึกมากขึ้นอย่างเห็นได้ชัด
Lebenita

เพิ่งตรวจสอบกับ Windows 2012 และไฟล์ 20GB VHDX ใหม่ ตัวเลือก -z เร็วมาก (วินาที) และไฟล์ดิสก์ VHDX ไม่เพิ่มขนาด ตัวเลือก -c ทำงานช้าลงมากและ VHDX กำลังเพิ่มขนาด So -z เป็นตัวเลือกที่ต้องการสำหรับฮาร์ดดิสก์เสมือนที่บางและขยายตัวโดยเฉพาะหากคุณใช้พื้นที่ดิสก์เกินกว่าที่กำหนด แต่มันไม่ปลอดภัยเท่ากับตัวเลือก -c
munrobasher

1
เพิ่งตรวจสอบเวอร์ชั่นล่าสุด (2.0) และมีความแตกต่างที่ชัดเจนสองประการ ประการแรกมีรุ่น 32 บิตและ 64 บิต (sdelete.exe และ sdelete64.exe) แต่ก็มีความแตกต่างเล็กน้อยในคำสั่ง -c ซึ่งกังวล ใน v1.61 ตัวเลือก -c พูดว่า "การทำความสะอาดพื้นที่ว่าง" แต่ใน v2.0 มันบอกว่า "Zeroing พื้นที่ว่าง" ตัวเลือก -z ยังบอกว่าเป็นศูนย์ ตัวเลือกข้อมูลแบบสุ่มหายไปหรือไม่
munrobasher

5

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

การผสมตัวเลือก "-z" และ "-c" อาจเป็น "ข้อผิดพลาดทั่วไป" เนื่องจาก SDelete ได้เปลี่ยนพฤติกรรมของตัวเลือกดังกล่าวในช่วงหลายปีที่ผ่านมา ดูที่ด้านล่างหากมีการอ้างอิงปรากฏว่า SDelete มีตัวเลือก "-z" เป็นครั้งแรกซึ่งทำการ "เช็ดมาตรฐานทางทหาร" จากนั้นเพิ่มตัวเลือก "-c" เพื่อเพิ่มพื้นที่ว่างให้เป็นศูนย์จากนั้นจะอยู่ระหว่าง v1.51 และ v1 61 เปลี่ยนพฤติกรรมนั้นเป็นพฤติกรรมปัจจุบัน

ข้อมูลอ้างอิง: ฟอรัม sysinternals.comและโฮมเพจ SDelete เก่าบน Microsoft TechNetผ่าน archive.org


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

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

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

เป็นที่น่าสนใจที่จะทราบใน 1.61 ไม่ว่าคุณจะใช้สวิตช์ตัวใดมันจะพูดว่า "Zeroing free space" เสมอ (และใน 1.51 มันจะบอกว่า "การทำความสะอาดพื้นที่ว่าง" เสมอ) นั่นเป็นความเข้าใจผิดเล็กน้อยในขณะที่มันทำให้ฉันไม่ไว้วางใจว่า "-c" จริง ๆ แล้วก็ "สะอาด" และไม่ใช่พฤติกรรม "ศูนย์"
rkagerer

5

เอกสารปัจจุบัน (และเวอร์ชันของโปรแกรม 2.01):

  • -c:ทำความสะอาดพื้นที่ว่าง ระบุจำนวนตัวเลือกของพื้นที่ที่จะปล่อยให้ว่างสำหรับการใช้งานโดยระบบที่กำลังทำงานอยู่
  • -z:พื้นที่ว่างเป็นศูนย์ (ดีสำหรับการเพิ่มประสิทธิภาพดิสก์เสมือน)

แต่ในรุ่นเก่ามันกลับด้าน:

  • -c:พื้นที่ว่างเป็นศูนย์ (ดีสำหรับการเพิ่มประสิทธิภาพดิสก์เสมือน)
  • -z:ทำความสะอาดพื้นที่ว่าง

ป้อนคำอธิบายรูปภาพที่นี่

แต่พวกเขาจะทำอย่างไร

Cleanสร้างไฟล์ที่ใหญ่ที่สุดและเติมด้วยข้อมูลแบบสุ่มจากนั้นเติมด้วยค่าศูนย์ นี่คือสิ่งที่คนส่วนใหญ่คิดว่าเป็นการเช็ดและมันเกินความจริง

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

-z Zero: เพียงเขียนเลขศูนย์ไปยังทุกส่วน นี่คือตัวเลือกที่คุณต้องการด้วยเหตุผลหลายประการ:

  • การเช็ดด้วยข้อมูลแบบสุ่มเกินความเป็นจริง (ไม่สามารถอ่านข้อมูลได้จริงเช่นครั้งละหนึ่งบิตแม้ว่ากล้องจุลทรรศน์จะไม่สามารถทำได้)
  • SSD บางตัวสามารถตรวจจับได้ว่าคุณกำลังเขียนศูนย์ไปยังเซกเตอร์และสามารถใช้เพื่อทำเครื่องหมายเซกเตอร์ว่าว่าง (คล้ายกับ TRIM)
  • ระบบจัดเก็บข้อมูลเสมือนส่วนใหญ่ (VMWare, Hyper-V, ดิสก์เสมือนของ Windows, พื้นที่จัดเก็บข้อมูล) ตระหนักดีว่าคุณกำลังเขียนศูนย์ทั้งเซกเตอร์และใช้โอกาสในการเรียกคืนพื้นที่ในไฟล์หน่วยเก็บข้อมูลพื้นฐาน
  • SSD จะไม่ทราบว่าเป้าหมายสูงสุดของคุณคือ TRIM ที่น่ายกย่องและ (เช่นดิสก์เสมือน) ถูกบังคับให้เติมข้อมูลในส่วนที่มีค่าศูนย์ไว้แล้วด้วยค่าที่ไม่ใช่ศูนย์เพื่อให้คุณเติมด้วยศูนย์อีกครั้ง มันแย่มากสำหรับ SSD ของคุณ

ที่มา : ติดตั้งฮาร์ดดิสก์เสมือนและเฝ้าดูการทำงานของ I / O ที่ sdelete ใช้ในทั้งสองโหมด

tl; dr: ใช้ -z Zero มันเร็วกว่าดีกว่าปลอดภัยกว่า

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