Apa perbedaan antara sdelete -c dan -z?

24

Saya telah belajar dari artikel ini untuk menggunakan sdelete sebagai langkah menyusut file VDI:

sdelete -c c:

Tapi apa artinya -c('Bersihkan ruang kosong' seperti yang dijelaskan oleh teks bantuannya)? Bukankah itu menulis ruang kosong dengan nol? Dan bagaimana dengan -z(Nol ruang kosong)? Apa perbedaan antara sdelete -c dan -z?

Edit

Saya mencoba langkah dalam artikel yang disebutkan sebelumnya, tetapi gagal mengurangi ukuran .vidfile. Lalu saya mengikuti posting superuser ini , dan mengubah opsi -cmenjadi -z, dan berhasil.

Jadi sepertinya -zmenulis nol untuk membebaskan ruang, dan -cmenulis sesuatu yang lain (bit acak mungkin).

Api Beku
sumber

Jawaban:

21

Saya pikir ini adalah kesalahan umum. Mungkin opsi -z tidak tersedia di versi sebelumnya. SDelete 1.61 berkata

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

Perhatikan bahwa hal itu akan memperluas cakram keras Anda ke ukuran penuh. Hanya dalam proses menyusut oleh VMWare itu akan menjadi lebih kecil lagi.

Tes cepat di mesin saya:

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

Yang menunjukkan bahwa -z hanya menulis nol sederhana sedangkan -c adalah standar militer menghapus DoD 5220.22-M seperti yang tertulis di situs web SDelete .

Thomas Weller
sumber
Tidak akan menggembungkan file jika perangkat lunaknya agak cerdas. Sebagian besar aplikasi virtualisasi. Saya baru saja mencobanya di VMware Fusion, itu tidak meningkatkan ukuran file sama sekali.
Daniel B
1
Sayangnya, VMWare Workstation Pro 12 memperluas disk ke ukuran penuh.
Lebenita
-c dan -z diiklankan di 1.51 persis sebaliknya (apakah itu hanya kesalahan dalam deskripsi atau fungsinya juga terbalik saya tidak tahu). Cara 1,61 jauh lebih masuk akal, jelas.
Lebenita
Baru diperiksa dengan Windows 2012 dan file VHDX 20GB baru. Opsi -z sangat cepat (detik) dan file disk VHDX tidak bertambah besar. Opsi -c berjalan jauh lebih lambat dan ukuran VHDX meningkat. Jadi -z adalah opsi yang lebih disukai untuk apa yang disebut hard disk virtual tipis / meluas terutama jika Anda memiliki ruang disk yang terlalu banyak. Tapi itu tidak seaman opsi -c
munrobasher
1
Baru saja memeriksa versi terbaru (2.0) dan ada dua perbedaan yang jelas. Pertama ada versi 32-bit dan 64-bit (sdelete.exe & sdelete64.exe). Tetapi ada juga perbedaan kecil dalam perintah -c yang mengkhawatirkan. Dalam v1.61, opsi -c mengatakan "Membersihkan ruang kosong" tetapi dalam v2.0 dikatakan "Menurunkan ruang kosong". Opsi -z juga mengatakan zeroing. Apakah sudah kehilangan opsi data acak ??
munrobasher
5

Ini seharusnya lebih tepat diposting sebagai komentar untuk jawaban Thomas, tetapi karena saya belum bisa melakukannya, saya mempostingnya di sini.

Menggabungkan opsi "-z" dan "-c" mungkin merupakan "kesalahan umum", karena SDelete telah mengubah perilaku opsi tersebut selama bertahun-tahun. Melihat referensi yang disediakan di bawah ini, tampaknya SDelete pertama-tama memiliki opsi "-z" yang melakukan "penghapusan standar militer", kemudian menambahkan opsi "-c" untuk memberi ruang kosong, dan kemudian di antara v1.51 dan v1. 61 mengalihkan perilaku itu ke yang sekarang.

Referensi: Forum sysinternals.com dan beranda SDelete lama di Microsoft TechNet melalui archive.org.

LN2
sumber
Ini bukan jawaban untuk pertanyaan awal. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka - Anda selalu dapat mengomentari posting Anda sendiri, dan begitu Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap posting .
DavidPostill
4
Ini bukan jawaban untuk pertanyaan awal. Baca ulang baris pertama dari posting. Jika ada prosedur yang lebih baik untuk menambahkan informasi yang berguna dan / atau relevan ke jawaban yang sudah ada untuk seseorang, yang baru saja mendaftar ke layanan, jangan ragu untuk memberi tahu saya.
LN2
"Jika ada prosedur yang lebih baik untuk menambahkan informasi yang berguna dan / atau relevan ke jawaban yang sudah ada untuk seseorang, yang baru saja mendaftar ke layanan, jangan ragu untuk memberi tahu saya" - tidak ada, silakan baca tautan yang saya berikan.
DavidPostill
Sangat menarik untuk dicatat di 1.61 terlepas dari saklar mana yang Anda gunakan selalu mengatakan "Zeroing free space" (dan di 1,51 selalu mengatakan "Membersihkan ruang kosong"). Itu agak menyesatkan, untuk sementara itu membuat saya tidak percaya bahwa "-c" sebenarnya "bersih" dan bukan perilaku "nol".
rkagerer
5

Dokumentasi saat ini (dan program versi 2.01):

  • -c: Bersihkan ruang kosong. Tentukan jumlah ruang pilihan untuk dibiarkan bebas untuk digunakan oleh sistem yang sedang berjalan.
  • -z: Nol ruang kosong (baik untuk optimasi disk virtual).

Tetapi dalam versi yang lebih lama itu terbalik:

  • -c: Nol ruang kosong (baik untuk optimasi disk virtual).
  • -z: Bersihkan ruang kosong.

masukkan deskripsi gambar di sini

Tetapi apa yang mereka lakukan?

Clean membuat file terbesar yang bisa, dan mengisinya dengan data acak , lalu mengisinya dengan nol. Inilah yang kebanyakan orang pikirkan penyeka , dan itu berlebihan.

Kelemahannya adalah jika Anda menggunakan disk virtual, atau di dalam mesin virtual, atau menjalankannya di ruang penyimpanan: sistem penyimpanan yang mendasarinya akan dipaksa untuk mengalokasikan sumber daya untuk menyimpan data acak Anda, dan kemudian menahan nol. Semoga sistem penyimpanan yang mendasarinya akan menyadari bahwa semua ruang yang baru saja dialokasikan untuk drive Anda dapat direklamasi karena semua sektor tersebut hanya berisi nol.

-z Zero: Cukup tulis nol untuk semua sektor. Ini adalah opsi yang Anda inginkan, karena banyak alasan:

  • menyapu dengan data acak adalah pembunuhan yang berlebihan (membaca data secara praktis tidak mungkin; yaitu satu per satu meskipun mikroskop tidak layak)
  • beberapa SSD dapat mendeteksi bahwa Anda menulis nol untuk suatu sektor, dan dapat menggunakannya untuk menandai sektor tersebut sebagai bebas (mirip dengan TRIM)
  • kebanyakan sistem penyimpanan virtual (VMWare, Hyper-V, Windows Virtual Disk, Storage Spaces) menyadari bahwa Anda sedang menulis seluruh sektor nol, dan mengambil kesempatan untuk merebut kembali ruang dalam file penyimpanan yang mendasarinya
  • SSD tidak akan tahu bahwa tujuan akhir Anda pada dasarnya adalah TRIM yang dimuliakan, dan (seperti disk virtual) dipaksa untuk mengisi sektor yang sudah berisi nol, dengan non-nol, hanya agar Anda mengisinya dengan nol lagi. Itu mengerikan untuk SSD Anda.

Sumber : Memasang hard disk virtual, dan menyaksikan operasi I / O yang dilakukan sdelete pada kedua mode.

tl; dr: Gunakan -z Zero. Lebih cepat, lebih baik, lebih aman.

Ian Boyd
sumber