मेरे पास एक निर्देशिका है, जिसमें विंडोज 2008 सर्वर पर कुछ उपनिर्देशिकाओं में ~ 3 मिलियन फाइलें हैं। मूल dir पर SHIFT + DEL के माध्यम से फ़ाइलों को मैन्युअल रूप से हटाने से उम्र लगती है। क्या किसी अन्य तरीके से तेजी से विलोपन करना है?
मेरे पास एक निर्देशिका है, जिसमें विंडोज 2008 सर्वर पर कुछ उपनिर्देशिकाओं में ~ 3 मिलियन फाइलें हैं। मूल dir पर SHIFT + DEL के माध्यम से फ़ाइलों को मैन्युअल रूप से हटाने से उम्र लगती है। क्या किसी अन्य तरीके से तेजी से विलोपन करना है?
जवाबों:
चेतावनी: यदि आपके पास निर्देशिकाओं के प्रति सहानुभूति है तो del
वास्तविक निर्देशिकाओं को हटा देंगे और सहानुभूति को नहीं। इससे बहुत सावधान रहें और इन कमांड को तब तक न चलाएं जब तक आपको पता न हो कि टारगेट डायरेक्टरी के अंदर कोई सिम्बल नहीं हैं।
मुझे नियमित रूप से WinXP एन्क्रिप्टेड ड्राइव से बहुत सारी फाइलें और निर्देशिकाएं हटाने की जरूरत है, आमतौर पर 45,000 फ़ोल्डरों में 500,000 फाइलों में से लगभग 22 जीबी।
विंडोज एक्सप्लोरर के साथ हटाना बकवास है क्योंकि यह फाइलों को एन्यूमरेट करने में बहुत समय बर्बाद करता है। मैं आमतौर पर C: \ stufftodelete को हटाने के लिए आवश्यक सामान ले जाता हूं और एक deleteestuff.bat बैच फ़ाइल है rmdir /s/q C:\stufftodelete
। यह रात में चलने के लिए निर्धारित है, लेकिन कभी-कभी मुझे इसे दिन के दौरान चलाने की आवश्यकता होती है, ताकि जल्दी बेहतर हो।
यहां 303 फ़ोल्डरों में 960 फ़ाइलों के एक छोटे से 5.85 एमबी नमूने के त्वरित समय परीक्षण के परिणाम हैं। मैंने पद्धति 1 को विधि 2 के बाद चलाया, फिर परीक्षण निर्देशिकाओं को रीसेट किया।
विधि 1 फ़ाइलों और निर्देशिका संरचना को एक पास में निकालता है:
rmdir /s/q foldername
मेथड 2 में फाइल को डिलीट करने के लिए एक पहला पास है और प्रत्येक सिंगे फ़ाइल के लिए स्क्रीन पर लिखने के ओवरहेड से बचने के लिए आउटपुट। एक दूसरा पास फिर शेष निर्देशिका संरचना को साफ करता है:
del /f/s/q foldername > nul
rmdir /s/q foldername
यहां 3,243 फ़ोल्डरों में 19,521 फ़ाइलों में से 404 एमबी का उपयोग कर एक और परीक्षण के परिणाम दिए गए हैं:
तो इसमें बहुत कुछ नहीं है, शायद एक परीक्षण पर न्यायाधीश के करीब भी।
संपादित करें: मैं बहुत अधिक डेटा के साथ सेवानिवृत्त हुआ हूं, यह मेरे लिए एक विशिष्ट मामला है: 146,990 फ़ोल्डरों में 1,159,211 फ़ाइलों में से 28.3 जीबी:
वाह, विधि 2 विधि 1 की तुलना में लगभग तीन गुना तेज है! मैं अपने विलोपन अद्यतन कर रहा हूँ।
del
वास्तविक निर्देशिकाओं को हटा देंगे और सहानुभूति को नहीं। इससे बहुत सावधान रहें और इन कमांड को तब तक न चलाएं जब तक आपको पता न हो कि टारगेट डायरेक्टरी के अंदर कोई सिम्बल नहीं हैं।
यदि आपको नियमित रूप से बड़ी निर्देशिका पेड़ों को हटाना है, तो उस निर्देशिका पेड़ की जड़ को एक अलग विभाजन पर संग्रहीत करने पर विचार करें, फिर जब भी आपको सब कुछ हटाने की आवश्यकता हो, तो इसे तुरंत प्रारूपित करें। यदि आपको इसे स्वचालित करने की आवश्यकता है, तो आप इस डॉस कमांड का उपयोग कर सकते हैं:
echo Y | format Z: /FS:NTFS /X /Q
जहां Z: आपका 'अस्थिर' विभाजन है। नोट: विभाजन में कोई लेबल नहीं होना चाहिए। मैंने यहाँ इस बारे में ब्लॉग किया है ।
कमांड प्रॉम्प्ट में (प्रारंभ -> रन -> cmd
):
del /f /s /q foldername
बहुत तेज़ी से (अपने स्वयं के एपीआई का उपयोग करके) फ़ाइलों की प्रतिलिपि बनाने / आगे बढ़ने के अलावा, TeraCopy फ़ाइलों को हटा सकता है और यह बहुत तेज़ है। जब से TeraCopy का पता चला है, मैं इसे स्थापित किए बिना कंप्यूटर का उपयोग नहीं करता (यदि मैं कॉपी / स्थानांतरित / हटाने वाला हूं)।
वही इंस्टॉलर x64 संस्करण स्थापित करता है लेकिन इसका उपयोग करने के लिए आपको इसे मैन्युअल रूप से मजबूर करना होगा।
बीटा जो मैं स्थिर संस्करणों पर सुझाता हूं: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
मैंने एक बैट फाइल की थी जो वही करती है।
@echo off
echo --------------------WARNING--------------------
echo folder "%~1" will be deleted
echo --------------------WARNING--------------------
pause
echo Deleting folder: "%~1".
time /T
del /f/s/q "%~1" >nul
rmdir /s/q "%~1" >nul
echo Done.
time /T
echo --- Taking ownership.
takeown /f "%~1" /r /d y >nul
icacls "%~1" /reset /t >nul
icacls "%~1" /setowner "%username%" /t >nul
echo Done all.
time /T
यह दो चरणों में काम करता है, एक, यह फ़ाइलों को हटाने का प्रयास करता है। और दूसरा फाइलों का स्वामित्व लेने की कोशिश करना है। y को आपके स्थानीय (अंग्रेजी में हां के लिए स्टैंड) के अनुसार बदला जाना चाहिए। यदि कार्य विफल हो जाता है (उदाहरण के लिए यदि विफल क्योंकि अनुमति) तो आपको इसे फिर से चलाना होगा। हालाँकि, दूसरा राउंड पहले राउंड में डिलीट हुई फाइल्स को डिलीट करने की कोशिश नहीं करेगा, इसलिए यह बहुत जल्दी हो सकता है।
इसे कैसे उपयोग करे। एक पथ मार्ग में delfolder.bat के रूप में सहेजें (उदाहरण के लिए c: \ windows), फिर इसे इस रूप में चलाएँ
delfolder "foldername"
जहां foldername फ़ोल्डर का नाम है
मेरे परीक्षण में, 123'000 फ़ाइलों को हटाने में 3 मिनट (sata 7200rpm) लगे। वाह!
%1
एक स्क्रिप्ट में उपयोग नहीं करना चाहिए , लेकिन "%~1"
। इस तरह, अगर तर्क को उद्धरणों के साथ पारित किया गया है, तो इसे हटा दिया गया है और आवश्यक है। यदि इसे उद्धरणों के साथ पारित नहीं किया गया है, तो इसे उद्धृत किया जाता है।
नीचे दिए गए कोड का उपयोग करना आमतौर पर मेरे लिए अच्छा काम करता है।
mkdir empty_dir
robocopy empty_dir dir_to_wipe /mir /r:0 /w:0 /e
rmdir empty_dir dir_to_wipe
rsync
लिनक्स में उपयोग के समान है । यह यहाँ भी तेज है rmdir
?
del /f/q/s
+ से बहुत अलग है rmdir /s/q
। अगर आपके dir_to_wipe के पास आपके लिए जंकशन हैं, c:\some_important_dir
तो आपका डेटा खत्म हो जाएगा।
कमांड प्रॉम्प्ट से rd / s कमांड का उपयोग करें ।
सबसे अच्छा व्यावहारिक समाधान शायद फ़ोल्डर को कहीं से बाहर ले जाना है (उदाहरण के लिए रीसायकल बिन) और फिर इसे हटाना शुरू करें। यह उम्र ले जाएगा, लेकिन कम से कम यह रास्ते से बाहर हो जाएगा।
मुझे पूरा यकीन है कि उन सभी फ़ाइलों को हटाने के लिए आवश्यक समय कार्य की एक अंतर्निहित आवश्यकता है, हटाने के कार्यान्वयन में अक्षमता नहीं।
Cygwin स्थापित करें और rm -r का उपयोग करें । लेकिन यह अधिक होने की संभावना है।
rd /q /s
...
rm
वास्तव में cygwin cmd.exe बिल्टिन जितना तेज़ है rd
? क्योंकि पॉज़िक्स इंटरफ़ेस का साइबरविन एमुलेशन धीमा है क्योंकि इसमें कुछ अतिरिक्त काम करने की आवश्यकता होती है, जो rm
वास्तव में सराहना नहीं करता है।
rm -rf
। लगभग 10 मिनट मैंने गर्भपात किया और वापस चला गया del /f/s/q
क्योंकि साइगविन के तहत डिस्क का उपयोग केवल 50% था। के तहत del
, डिस्क उपयोग 100% आंकी गई है। इसलिए मुझे लगता है कि इसे तेजी से हटाना चाहिए। दोनों तरीकों के लिए CPU उपयोग <1% है। मुझे फ़ाइल संख्या पर यकीन नहीं है क्योंकि मैंने 10 मिनट की गणना करने के बाद विंडोज फ़ाइल डीलेटर को बंद कर दिया था।
क्या आपने इन दोनों ऐप्स में से कोई भी आज़माया है?
यदि आप सबसे तेज़ प्रदर्शन चाहते हैं, तो ओवरराइट्स की संख्या को 0 पर सेट करना सुनिश्चित करें। विकल्पों पर क्लिक करके ऐसा करें फिर मूल्य को संवाद के नीचे बदलें।
स्रोत फ़ील्ड में हटाने के लिए पथ दर्ज करें और फिर हटाएँ पर क्लिक करें।
ये ऐप्स रीसायकल बिन में फाइलें नहीं डालते हैं। देखभाल के साथ उपयोग करें।
यह पहले से उल्लेख किए गए उत्तरों में उठाए गए कदमों की प्रशंसा करने और उन्हें बढ़ाने के लिए प्रदान किया गया है।
ऊपर दिए गए दो तरीके काफी प्रभावी लगते हैं, लेकिन यह निर्धारित करने के लिए कि जब तक वे सटीक समान शर्तों के विरुद्ध नहीं होंगे, तब तक प्रदर्शन मुश्किल होगा:
फिर बैच फ़ाइल के माध्यम से कॉन्फ़िगरेशन निष्पादित करें और लॉग इन करने और उनके प्रदर्शन को मापने के लिए पॉवर्सशेल सीमलेट का उपयोग करें।
निम्नलिखित कुछ सैंपल फ़ोल्डर (कुल आकार के नाम) हैं, जिन पर मैंने प्रयोग किया था, लेकिन कोई निर्णायक प्रदर्शन / परिणाम प्राप्त करने में सक्षम नहीं था।
r.bat
rmdir /s/q 3.2G
rd.bat
del /f/s/q 3.3G > nul rmdir /s/q 3.3G
शक्ति कोशिका:
PS S:\T> Measure-Command { S:\T\rd.bat } > rdlog.txt
PS S:\T> Measure-Command { S:\T\r.bat } > rlog.txt
PS S:\T> Measure-Command { S:\T\rd.bat } > rd_1.7G_log.txt
PS S:\T> Measure-Command { S:\T\r.bat } > r_1.8G_log.txt
PS S:\T> Measure-Command { S:\T\r.bat } > r_2.4G_log.txt
PS S:\T> Measure-Command { S:\T\rd.bat } > rd_2.7G_log.txt
PS S:\T> Measure-Command { S:\T\r.bat } > r_3.2G_log.txt
PS S:\T> Measure-Command { S:\T\rd.bat } > rd_3.3G_log.txt
ह्यूगो का उत्तर सबसे तेज़ है लेकिन यह पहले पास में छिपी या सिस्टम फ़ाइलों को नहीं हटाता है, इसलिए यदि आप अधिक पूर्ण समाधान चाहते हैं तो पैरामीटर / a का उपयोग करें:
del /f /s /q /a foldername > nul
rmdir /s /q foldername
Magallanes द्वारा BAT फ़ाइल के बारे में , टेकऑन और आइकल्स के साथ बहुत सावधानी बरतें, हार्डलिंक समान अनुमतियों और स्वामियों को साझा करें, इसलिए यदि आप जिस फ़ोल्डर को हटाना चाहते हैं, उसमें असंतृप्त हार्डलिंक हैं, तो टेकऑफ़ और आइकल्स का उपयोग करके अनुमतियाँ और फ़ाइलों के मालिकों को बदल दिया जाएगा। फ़ोल्डर।
उपकरण ln.exe का उपयोग करके आप फ़ोल्डर के अंदर हार्डलिंक की गई सभी फाइलों को सूचीबद्ध कर सकते हैं और यह जान सकते हैं कि क्या वे फ़ोल्डर के बाहर फाइलों में हार्डलिंक किए गए हैं (असंतृप्त हार्डलिंक):
ln.exe --enum foldername > HardlinksList.txt
कई फ़ाइलों को हटाने की तुलना में फ़ोल्डर हटाना अधिक तेज़ है।
इसलिए यदि आप कमांड प्रॉम्प्ट के बजाय माउस का उपयोग करना पसंद करते हैं, तो आप डायरेक्टरी बना सकते हैं, वहां फाइलें ले जा सकते हैं और इसे हटा सकते हैं (शिफ्ट + डेल के साथ जैसा आपने कहा)।