बेहतर संपीड़न के लिए विंडोज़ पर वर्चुअल डिस्क के खाली स्थान को शून्य कैसे भरें?


46

बेहतर संपीड़न के लिए विंडोज़ पर वर्चुअल डिस्क के खाली स्थान को शून्य कैसे भरें?

मैं उसके लिए एक साधारण ओपन सोर्स टूल (या कम से कम मुफ्त) चाहूंगा। इसे संभवत: भरी हुई बड़ी फ़ाइल के रूप में लिखना चाहिए 0और बाद में इसे मिटा देना चाहिए। केवल एक पास (यह सुरक्षा कारणों के लिए नहीं है, लेकिन संपीड़न के लिए, हम आभासी मशीनों का समर्थन कर रहे हैं)।

खिड़कियों के अंदर से चलना चाहिए और डिस्क से नहीं।

लिनक्स पर मैं इसे इस तरह से (एक उपयोगकर्ता के रूप में):

cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/

संपादन 1: मैंने स्वीकार किए गए उत्तर से sdelete का उपयोग करने का निर्णय लिया। मैं sdelete की मदद पर एक नजर थी:

C:\WINDOWS\system32>sdelete /?

SDelete - Secure Delete v1.51
Copyright (C) 1999-2005 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: sdelete [-p passes] [-s] [-q] <file or directory>
       sdelete [-p passes] [-z|-c] [drive letter]
   -c         Zero free space (good for virtual disk optimization)
   -p passes  Specifies number of overwrite passes (default is 1)
   -q         Don't print errors (Quiet)
   -s         Recurse subdirectories
   -z         Clean free space

यह एक पुराना संस्करण है। मैंने द्वितीय मंगलाचरण से -c स्विच का उपयोग किया और यह काफी तेज़ था (केवल पुराने संस्करणों के लिए V1.6 से पहले सिंटैक्स वैध है)।

c:\>sdelete -c c: (OUTDATED!)

मुझे यह आभास होता है कि मुझे क्या चाहिए। Sdelete टूल का उपयोग करना आसान है और इसे प्राप्त करना आसान है।

संपादित करें 2: जैसा कि स्कॉटबॉब ने नीचे दिए गए अपने उत्तर में बताया था, उपकरण में सितंबर 2011 में परिवर्तन हुआ (संस्करण 1.6) -c और -z विकल्पों के अर्थ बदल गए हैं। 1.6 के बाद से सही उपयोग है

c:\>sdelete -z c:

संपादित 3: sdelete और sdelete64 का 2.0 संस्करण है। वे शून्य करते समय छोटी गाड़ी प्रतीत होती हैं। यह बहुत लंबे समय के लिए 100% पर अटका हुआ प्रतीत होगा। कुछ लोगों ने 10 - 40 बार लंबे समय तक सूचना दी है। पुराने संस्करण 1.61 में यह समस्या नहीं है। देखें https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils

संपादित करें 4: अब गतिशील रूप से आवंटित वर्चुअल डिस्क स्थान का मुद्दा है । यदि आपके पास 100GB डिस्क है जो पूर्ण नहीं है और होस्ट पर केवल 30GB का उपयोग करता है, तो जीरो फिलिंग को डिस्क के आकार में नाटकीय रूप से वृद्धि नहीं करनी चाहिए क्योंकि यह डायनेमिक आवंटन के उद्देश्य का विरोध करता हैOracle VM VirtualBox Https://superuser.com/q/907196/44402 के लिए एक उत्तर है - लेकिन VMWare, Xen, XenServer, आदि जैसे अन्य ढेरों पर, इसे अलग से उत्तर देने की आवश्यकता है।


2
sdeleteनौकरी के लिए सही उपकरण है, लेकिन उपकरण के लिए एक सितंबर 2011 का परिवर्तन (संस्करण 1.6) उपरोक्त उत्तरों को गलत बनाता है। -cऔर -zविकल्पों को बदल अर्थ है। अब इसका सही उपयोग हैsdelete -z c:\
स्कॉर्टब

यह भी सुनिश्चित करें कि आप गाय का उपयोग करते हैं (कॉपी पर लिखें) शैली की छवियां यदि आपके पास एक ही मूल स्थापित से बहुत सारी मशीनें हैं।
मैट

जवाबों:


46

खिड़कियों पर सभी खाली जगह को शून्य करने के लिए sysinternals टूल sdelete का उपयोग करें । आप जो आदेश चाहते हैं वह इस तरह दिखेगा sdelete -z c:

उपयोग: sdelete [-p पास] [-s] [-q] ...  
sdelete [-p पास] [-z | -c] [ड्राइव लेटर] ...  
-a निकालें केवल पढ़ने के लिए विशेषता।  
-सी स्वच्छ मुक्त स्थान।  
-p पास ओवरराइट पास की संख्या निर्दिष्ट करता है (डिफ़ॉल्ट 1 है)।  
-q त्रुटियों को न प्रिंट करें (शांत)।  
-s or -r Recurse उपनिर्देशिका।  
-z शून्य मुक्त स्थान (वर्चुअल डिस्क ऑप्टिमाइज़ेशन के लिए अच्छा है)।

लिनक्स के लिए मेरा सुझाव है कि आप ज़ीरोफ्री का उपयोग करें


मेरे वीएचडी को कॉम्पैक्ट करने के लिए यहां आया था। TechNet .. से कुछ संबंधित लिंक साझा करना technet.microsoft.com/en-us/library/cc708394%28v=ws.10%29.aspx technet.microsoft.com/en-us/library/cc708317(v=ws.10 ) .aspx
Faiz

मुझे आश्चर्य है, अगर शून्य-भरने का लिनक्स मानक एन्क्रिप्टेड ड्राइव LUKS dm-crypt पर कोई सकारात्मक प्रभाव पड़ेगा । इससे पहले कि मैं पूरी मशीन को एक क्लोनज़िला बूटस्टिक से बूट करने और पूरे ड्राइव के भौतिक बैकअप के अधीन कर दूं। - क्या एन्क्रिप्शन के भीतर का शून्य खंड बाहरी डिस्क पर शून्य खंड तक ले जाएगा? या यह अभी भी (बिना किसी कारण के) शोर को सुरक्षा कारणों से लिखेगा? या क्या मुझे रॉ-माउंटेड (एन्क्रिप्टेड सामग्री को नहीं देख) क्रिप्ट ड्राइव को शून्य करना चाहिए? (और क्या यह एक अच्छा विचार है अर्थात क्रिप्टेड ड्राइव के संदर्भ में आबंटन तालिका भरोसेमंद है?)
फ्रैंक नोक

अगर यह nulls को एन्क्रिप्ट करने और डिस्क पर एन्क्रिप्टेड "शोर" लिखने के अलावा कुछ भी करता है तो मुझे झटका लगेगा।
दान प्रातः

15

विंडोज में पहले से ही एक अंतर्निहित कमांड लाइन टूल है जो ऐसा करता है: CIPHER। इसका / W विकल्प देखें।

तो पूरा कमांड होगा: सिफर / डब्ल्यू: सी: ( सी को बदलें : वास्तविक ड्राइव अक्षर के साथ)

(यह अप्रयुक्त स्थान के लिए शून्य लिखता है, फिर 0xff, इसलिए आपको इसे देखना होगा और इसे ctrl-c के साथ रोकना होगा जब यह 0xff लिखना शुरू करता है - आदर्श नहीं है, लेकिन यह विंडोज़ में मुफ्त और पहले से ही उपलब्ध है क्योंकि XP ​​कम से कम


3
दिलचस्प दृष्टिकोण। इससे पहले कि सभी शून्य को पूर्ववत करना शुरू करें, ब्रेक का निष्पादन। उन उपकरणों का उपयोग करके रचनात्मक समाधान के लिए +1 जो पहले से मौजूद हैं!
साइकोडाटा

मुझे आश्चर्य है कि क्या यह पता लगाना संभव है कि जब यह शून्य लिखना समाप्त हो जाए और फिर इसे समाप्त कर दिया जाए ...
फ्रेडरिक नॉर्ड

यदि आप SSD हार्ड ड्राइव का उपयोग करते हैं, तो जांचें कि आपके पास TRIM सक्षम है। फिर सभी अप्रयुक्त ब्लॉक को हार्ड ड्राइव फर्मवेयर द्वारा 0xFF पैटर्न के साथ जल्दी से मिटा दिया जाएगा। वर्चुअल सर्वर द्वारा बनाई गई वर्चुअल डिस्क छवियों पर यह बहुत उपयोगी है। उस चित्र को अंतराल के रूप में भरा जाएगा, और फ़ाइल सिस्टम को होस्ट सिस्टम पर फ़ाइल ब्लॉक करेगा।
ज़नीक

यह SDelete -z (जो किसी अन्य प्रतिक्रिया दिए बिना 100% पर अटक गया था) की तुलना में बहुत अच्छी तरह से और बहुत तेजी से काम किया।
मनोचिकित्सा

6

एक आभासी डिस्क के संघनन के लिए स्थान खाली नहीं करेगा। SDelete मुक्त अंतरिक्ष के शून्यीकरण से शुरू होता है, लेकिन फिर 0xff के साथ भरता है और फिर यादृच्छिक बाइट्स देखें एक वर्चुअल सर्वर 2005 आभासी हार्ड डिस्क फ़ाइल तैयार करने के लिए कैसे Microsoft उत्पाद सहायता सेवा को भेजने के लिए कैसे संघनन के लिए एक VHD स्थापित करने के लिए के लिए

Precompact.exe किसी कारण से खोजना मुश्किल हो सकता है। मुझे यहाँ एक अलग डाउनलोड करने योग्य प्रति मिली । हालाँकि अगर आपके पास विंडोज़ वर्चुअल पीसी है तो आप इसे% प्रोग्रामफाइल्स (x86)% \ Windows वर्चुअल पीसी \ इंटीग्रेशन कंपोनेंट्स \ Precompact.iso से भी प्राप्त कर सकते हैं।


2
-c विकल्प के साथ sdelete एक शून्य भरण है। शायद आप विंडोज बिल्ट-इन सिफर उपयोगिता के बारे में सोच रहे हैं जिसमें एक शून्य-एकमात्र विकल्प नहीं है?
जेरेमी एम

"एसडीईटी ने रक्षा विभाग को मानक डीओडी 5220.22-एम" को मंजूरी और साफ करने के लिए लागू किया है (डॉक्स से) जो विशेष रूप से एक क्लस्टर को केवल 0 नहीं करता है। sdelete -c शून्य स्थान खाली करता है (इसे भरने के बाद), हालांकि जिस विधि का उपयोग sdelete उपयोग करता है वह precompact के समान नहीं है और कई मामलों में precompact की तुलना में बड़ी ड्राइव में परिणाम होगा, जिसे वर्चुअल ड्राइव को शून्य करने के लिए डिज़ाइन किया गया था
जिम B

यह एक और उपकरण के बारे में जानना दिलचस्प है। धन्यवाद
mit

2
SDelete 0s के साथ डिस्क को छोड़ सकता है, लेकिन precompact बहुत तेजी से काम करता है और इस तरह की स्थिति के लिए था।
क्रिस एस

2
@romkyns यह अब विंडोज और हाइपर-वी समर्थन के सभी आधुनिक संस्करणों trim(Win7 और हाइपर-वी 2012 के रूप में) से कोई फर्क नहीं पड़ता , कॉम्पैक्ट करने से पहले शून्य करने की कोई आवश्यकता नहीं है। PreCompact उपयोगिता डिस्क को हटाए गए फ़ाइलों के साथ केवल शून्य भागों, जो हिस्सा कभी उपयोग नहीं किया गया था, वह अछूता छोड़ दिया गया था। sdeleteडायनामिक डिस्क को स्थैतिक आकार में भरने जैसी किसी चीज़ का उपयोग करना , जिसे फिर केवल उसी आकार में वापस कॉम्पैक्ट किया जा सकता है जो वास्तव में उपयोग किया जाता है।
क्रिस एस

6

fsutilखुला स्रोत नहीं है, लेकिन विंडोज के साथ जहाज है और इसलिए कुछ भी अतिरिक्त खर्च नहीं होता है। मैंने इसका उपयोग खाली जगह को खाली WD 250 GB 7200 RPM ड्राइव ( F:) पर शून्य करने के लिए किया । यहाँ मैं कमांड लाइन से भागा हूँ:

fsutil volume diskfree f:

जिसने यह रिपोर्ट दिखाई:

Total # of free bytes        : 249899469856
Total # of bytes             : 249997291520
Total # of avail free bytes  : 249899469856

मैंने Total # of avail free bytesनिम्नलिखित आदेशों में उपयोग किया :

fsutil file createnew F:\clear 249899469856
fsutil file setvaliddata F:\clear 249899469856
fsutil file setzerodata offset=0 length=249899469856 F:\clear
del f:\clear

250GB शून्य लिखने में लगभग 4 घंटे का समय लगा।


3

मैं भी केवल 0x00 लिखने के लिए सिफर का उपयोग करने का एक तरीका खोज रहा था, तब बाहर निकलें जब मुक्त स्थान पर 0xFF लिखना शुरू करें। यह अधिकतम मुक्त स्थान को संपीड़ित करने की अनुमति देगा। मैं निम्नलिखित मूल PowerShell नौकरी के साथ आया हूं

आवश्यक ड्राइव के साथ d: \ को प्रतिस्थापित करें

Function CipherFreeSpace
{
    $cipherjob = @()
    $Job = start-job -ScriptBlock {cipher /w:d:\ }
    while ($cipherjob -notcontains "Writing 0xFF")
    {
        Write-host "." -nonewline 
        Start-Sleep 2
        $cipherjob += $job | Receive-Job 
    }
    $Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace

सादर सिमोन


1

यदि आप VMware का उपयोग कर रहे हैं, तो वर्चुअल ड्राइव पर किसी भी अप्रयुक्त स्थान को पुनः प्राप्त करने के लिए VMware में निर्मित उपकरणों का उपयोग करना बेहतर तरीका है।

मैंने इसका उपयोग वर्चुअल डिस्क के आकार को 28 गीगाबाइट से घटाकर 13 गीगाबाइट करने के लिए किया। आपकी माइलेज भिन्न हो सकती है।

जब मैंने उपयोग करने की कोशिश की sdelete -z c:, तो यह वास्तव में आभासी ड्राइव के आकार को 30 गीगाबाइट तक बढ़ा दिया, जो इसका अधिकतम आकार था।

VMware वेबसाइट देखें और एक वर्चुअल हार्ड डिस्क को कॉम्पैक्ट करें , जो कि नीचे है Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks

अपडेट करें

कभी-कभी, GUI उपकरण कमांड लाइन टूल के रूप में काफी विश्वसनीय नहीं होते हैं। मैं उन मुद्दों में चला गया हूँ जहाँ GUI उपकरण विफल होते हैं, लेकिन कमांड लाइन उपकरण ठीक काम करते हैं। यहाँ के लिए विकल्प हैं VMware Desktop 10:

C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager -h
Diskname or some other argument is missing.
VMware Virtual Disk Manager - build 1895310.
Usage: vmware-vdiskmanager.exe OPTIONS <disk-name> | <mount-point>
Offline disk manipulation utility
  Operations, only one may be specified at a time:
     -c                   : create disk.  Additional creation options must
                            be specified.  Only local virtual disks can be
                            created.
     -d                   : defragment the specified virtual disk. Only
                            local virtual disks may be defragmented.
     -k                   : shrink the specified virtual disk. Only local
                            virtual disks may be shrunk.
     -n <source-disk>     : rename the specified virtual disk; need to
                            specify destination disk-name. Only local virtual
                            disks may be renamed.
     -p                   : prepare the mounted virtual disk specified by
                            the mount point for shrinking.
     -r <source-disk>     : convert the specified disk; need to specify
                            destination disk-type.  For local destination disks
                            the disk type must be specified.
     -x <new-capacity>    : expand the disk to the specified capacity. Only
                            local virtual disks may be expanded.
     -R                   : check a sparse virtual disk for consistency and attempt
                            to repair any errors.
     -e                   : check for disk chain consistency.
     -D                   : make disk deletable.  This should only be used on disks
                            that have been copied from another product.

यहाँ एक डिस्क को सिकोड़ने का एक उदाहरण है। इस कमांड लाइन ने GUI से एक ही कमांड के बावजूद काम किया:

C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -k
 "H:\VMware\WindowsXP.vmdk"
  VixDiskLib: Invalid configuration file parameter.  Failed to read configuration file.
  Shrink: 100% done.

VizDiskLibVMware डेस्कटॉप 10 के साथ शुरू होने वाला त्रुटि संदेश नया है और इसे सुरक्षित रूप से अनदेखा किया जा सकता है।


1
sdelete ही vmdk साइज को सिकोड़ने के लिए नहीं है। इसका उपयोग सिकुड़न ऑपरेशन के लिए प्रीपेरेशन में सभी उपलब्ध खाली स्थान को शून्य में बदलने के लिए किया जाता है। यदि आप ऐसा नहीं करते हैं, तो नष्ट की गई फाइलें और अन्य अनाथ डेटा अभी भी डिस्क पर मौजूद होंगे। VMWare टूल हमेशा उन फ़ाइलों द्वारा कब्जा किए गए डिस्क स्थान को पुनर्प्राप्त करने में सक्षम नहीं होंगे। जब आप सिकुड़ते टूल को चलाते हैं, तो इन "हटाई गई फ़ाइलों" को शून्य में बदलना डिस्क स्थान को पूरी तरह से पुन: प्राप्य बनाता है। वर्चुअल डिस्क पर फ़ाइल आकार में वृद्धि का कारण आपने देखा है क्योंकि साडेलेट सभी उपलब्ध स्थान को भर देता है जिसमें यह शून्य है।
लियोन लुसार्डी

इसे स्पष्ट करने के लिए धन्यवाद। Methinks कि उपकरण बेहतर नामकरण और / या जब आप इसे चलाते हैं, तो टूल क्या करता है, इसकी एक-लाइन विवरण से लाभ हो सकता है।
कंटैंगो


-1

mit,

मैंने पाया कि साइमन की पॉवरशेल स्क्रिप्ट ने वही किया, जो आपको जरूरत है, बिना वर्जन की समस्याओं के। (विभिन्न संस्करणों में अलग-अलग काम करने वाले स्विच)

यह एक समस्या थी, जो सिफर चलती रही, लेकिन मैंने यह तय कर दिया।

मैंने अस्थायी फ़ोल्डर को साफ करने के लिए स्क्रिप्ट को और संशोधित किया:

आपको दोनों स्थानों में अपने ड्राइव अक्षर के साथ F: \ को प्रतिस्थापित करना होगा।

Function CipherFreeSpace
{
    $cipherjob = @()
    $Job = start-job -ScriptBlock {cipher /w:F:\ }
    while ($cipherjob -notcontains "Writing 0xFF")
    {
        Write-host "." -nonewline 
        Start-Sleep 2
        $cipherjob += $job | Receive-Job 
    }
    Stop-Process -processname cipher
    Start-Sleep -s 3
    Remove-Item -recurse F:\EFSTMPWP
    $Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace

-4

तीसरे पक्ष के उपकरण क्यों, जब विंडोज में पहले से ही सभी की आवश्यकता होगी, "मुफ्त" के लिए और जितनी तेजी से यह कभी भी हो सकता है:

1) format X: /fs:XXXX /p:#, Xड्राइव पत्र कहां है; XXXXफ़ाइल सिस्टम है, या तो और #पास की संख्या है;

2) डिस्कपार्ट cleanकमांड: http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;

Btw, आपको एक से अधिक पास की आवश्यकता नहीं है, या तो - एक दावा अन्यथा अप्रचलित डिस्क लाल / लिखने की रणनीतियों के लिए पुरानी जानकारी है, उत्पादों को धक्का देने वाले लोग, व्यामोह संचालित, या "विशेषज्ञ सलाह" के रूप में पारित बी एस।

संपादित करें: nvm, मुक्त स्थान भाग छूटा ...


1
कई मामलों में तीसरे पक्ष के उपकरण उपलब्ध हैं जो अच्छा या बेहतर काम करते हैं, स्थापित करना या अधिक विश्वसनीय होना आसान है। लेकिन यह पूरी तरह से ओटी है, सवाल यह नहीं था कि इसे कौन लिखता है। इसके अलावा Microsoft एक्वायर्ड सिसिन्टर्नल्स (जिन्होंने SSDelete लिखा था) क्योंकि वे हल्के थे जो बिलिन स्टफ से बेहतर थे। जरा प्रक्रिया शुरू करने के लिए MS उत्पाद "TaskManager" -1 के लिए ProcessExplorer की तुलना करें
Alojz Janez

आपने प्रश्न में "ओपन सोर्स" आवश्यकता को याद किया, क्या आपने?
आलोज जांज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.