लिनक्स में मुफ्त डिस्क स्थान कैसे मिटाएं?


145

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

इसे प्राप्त करने के लिए मुझे क्या उपयोग करना चाहिए?


एकमात्र सुरक्षित समाधान हो सकता है कि आप अपनी फ़ाइलों को कहीं और सहेज लें, पूरे विभाजन को मिटा दें, फ़ाइल सिस्टम को फिर से बनाएँ, और फिर अपनी फ़ाइलों को पुनर्स्थापित करें। मैंने फोटोरेक चलाया है और इस बात से हैरान था कि 'खाली' जगह को खाली करने के बाद भी कितना सामान वापस पाया जा सकता है। एक समझौता समाधान अपने विभाजन के बाईं सीमा को अपने आकार के 6% से स्थानांतरित करने के बाद है, जाहिरा तौर पर मुक्त स्थान को पोंछने के बाद।
user39559

जवाबों:


107

चेतावनी: आधुनिक डिस्क / एसएसडी हार्डवेयर और आधुनिक फाइल सिस्टम उन स्थानों पर डेटा को दूर कर सकते हैं जहां आप उन्हें हटा नहीं सकते हैं, इसलिए यह प्रक्रिया अभी भी डिस्क पर डेटा छोड़ सकती है। डेटा को पोंछने का एकमात्र सुरक्षित तरीका है ATA Secure Erase कमांड (यदि इसे सही तरीके से लागू किया गया है), या भौतिक विनाश। यह भी देखें कि मैं हार्ड ड्राइव पर सभी सूचनाओं को कैसे मिटा सकता हूं?

आप सुरक्षित-डिलीट नामक टूल के एक सूट का उपयोग कर सकते हैं।

sudo apt-get install secure-delete

इसके चार उपकरण हैं:

srm- किसी मौजूदा फ़ाइल को
smemसुरक्षित रूप से हटाएं
sfill- रैम से किसी फ़ाइल के निशान को सुरक्षित रूप से हटा दें - अपनी हार्ड ड्राइव पर खाली के रूप में चिह्नित सभी स्थान को
sswapमिटा दें - आप से सभी डेटा को स्वैप स्थान से मिटा दें।

के मैन पेज से srm

srm को एक सुरक्षित तरीके से माध्यमों पर डेटा को हटाने के लिए डिज़ाइन किया गया है जिसे चोरों, कानून प्रवर्तन या अन्य खतरों से पुनर्प्राप्त नहीं किया जा सकता है। पोंछ एल्गोरिथ्म, पीटर गुटमैन, प्रमुख नागरिक क्रिप्टोग्राफ़रों में से एक, 6 वीं यूनिक्स सुरक्षा संगोष्ठी में प्रस्तुत "मैग्नेटिक एंड सॉलिड-स्टेट मेमोरी से डेटा का सुरक्षित विलोपन" पेपर पर आधारित है।

Srm की सुरक्षित डेटा हटाने की प्रक्रिया इस प्रकार है:

  • 0xff के साथ 1 पास
  • 5 रैंडम पास। /dev/urandomयदि उपलब्ध हो तो सुरक्षित RNG के लिए उपयोग किया जाता है।
  • 27 पीटर गुटमैन द्वारा परिभाषित विशेष मूल्यों के साथ गुजरता है।
  • 5 रैंडम पास। /dev/urandomयदि उपलब्ध हो तो सुरक्षित RNG के लिए उपयोग किया जाता है।
  • फ़ाइल को यादृच्छिक मान में बदलें
  • फ़ाइल ट्रंक करें

सुरक्षा के एक अतिरिक्त उपाय के रूप में, फ़ाइल O_SYNC मोड में खोली जाती है और प्रत्येक पास के बाद fsync()कॉल किया जाता है। srmगति के उद्देश्य के लिए 32k ब्लॉक लिखता है, डिस्क कैश के बफ़र्स को भरने के लिए उन्हें फ्लश करने और पुराने डेटा को ओवरराइट करने के लिए मजबूर करता है जो फ़ाइल से संबंधित था।


5
सुरक्षित-हटाए जाने के वर्तमान "आधिकारिक" होमपेज का पता लगाना कठिन है। एक पुराने संस्करण का दावा है कि बग रिपोर्ट नहीं हैं, लेकिन एक ही समय में कोई खुला बगट्रैकिंग सिस्टम नहीं है, जहां मैं एक बग की रिपोर्ट कर सकता हूं जो मुझे मिला है। सिक्योर-डिलीट होमपेज यह भी बताता है कि यह आपके द्वारा उपयोग किए जाने वाले फाइल सिस्टम के आधार पर डेटा के सभी अप्रयुक्त ब्लॉक को मिटा नहीं सकता है , जो कि सत्य है।
user39559

11
आधुनिक हार्ड डिस्क (लगभग 20 जीबी से बड़ा) के साथ, कई पास करना और युगों की प्रतीक्षा करना पूरी तरह से बेकार है। इसलिए विशेष उपकरण स्थापित करना भी बेकार हो गया है (जो समझा सकता है कि सुरक्षित-डिलीट का कोई और अधिक होम पेज क्यों नहीं है)। बस उपयुक्त विभाजन से ऐसा करें cat /dev/zero >nosuchfile; rm nosuchfile:।
mivk

1
@mivk: एक से अधिक पास करना बेकार क्यों है? और / dev / random के बजाय / dev / शून्य का उपयोग क्यों करें? क्या यह गति चिंताओं के कारण है?
n

5
का उपयोग करना / देव / शून्य बहुत तेज है। यदि आप / देव / यादृच्छिक से मुक्त स्थान लिखते हैं, तो कर्नेल को मक्खी के सभी यादृच्छिक डेटा को उत्पन्न करना होगा। यह एक मनोरंजक तरीका है कि आप अपने लोड औसत को अधिकतम तक देख सकते हैं ...
dafydd

3
इस सवाल का कि क्या कई वाइप्स आवश्यक हैं, यहां उत्तर दिया गया है: हार्ड ड्राइव पर शून्य (या यादृच्छिक डेटा) क्यों लिख रहा है, यह एक बार करने से बेहतर है?
सालेके

71

सबसे तेज़ तरीका, अगर आपको केवल एक ही पास की आवश्यकता है और बस सब कुछ शून्य के साथ बदलना चाहते हैं, है:

cat /dev/zero > zero.file
sync
rm zero.file

(उस फ़ाइलपाइप पर निर्देशिका से चलाएं जिसे आप मिटा देना चाहते हैं)
( syncकमांड एक व्यामोह उपाय है जो यह सुनिश्चित करता है कि सभी डेटा डिस्क पर लिखे गए हैं - एक बुद्धिमान कैश मैनेजर यह काम कर सकता है कि वह फ़ाइल के अनलिंक होने पर किसी भी लंबित ब्लॉक के लिए लिख सकता है। )

इस ऑपरेशन के दौरान एक समय होगा जब फाइल सिस्टम पर बिल्कुल भी खाली स्थान नहीं होगा, जो कि दसियों सेकंड हो सकता है यदि परिणामस्वरूप फ़ाइल बड़ी और खंडित है तो हटाने के लिए कुछ समय लगता है। उस समय को कम करने के लिए जब फ्रीस्पेस पूरी तरह से शून्य है:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file

यह महंगा फोरेंसिक ऑपरेशन के बिना पुरानी फ़ाइल सामग्री को पढ़ने वाले किसी को रोकने के लिए पर्याप्त होना चाहिए। थोड़े अधिक सुरक्षित, लेकिन धीमे, संस्करण के /dev/zeroसाथ /dev/urandom। अधिक व्यामोह के लिए कई चरणों के साथ चलते हैं /dev/urandom, हालांकि अगर आपको जरूरत है कि shredकोरुटिल्स पैकेज से उपयोगिता को जाने का रास्ता है:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file

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

उपरोक्त सभी को किसी भी फाइल सिस्टम पर काम करना चाहिए।

फ़ाइल का आकार सीमा:

जैसा कि DanMoulding नीचे एक टिप्पणी में इंगित करता है, यह कुछ फाइल सिस्टम पर फ़ाइल आकार लिमिस के साथ समस्या हो सकती है।

FAT32 के लिए यह निश्चित रूप से 2GiB फ़ाइल सीमा के कारण एक चिंता का विषय होगा : अधिकांश वॉल्यूम इन दिनों की तुलना में बड़े होते हैं (8TiB वॉल्यूम आकार सीमा IIRC है)। आप कई छोटी फ़ाइलों को उत्पन्न करने के लिए बड़े cat /dev/zeroआउटपुट आउटपुट को पाइप करके splitऔर इसके अनुसार चरणों को हटाने और चरणों को हटाने के द्वारा इसके चारों ओर काम कर सकते हैं ।

Ext2 / 3/4 के साथ यह एक चिंता का विषय है: डिफ़ॉल्ट / सामान्य 4K ब्लॉक के साथ फ़ाइल आकार की सीमा 2TiB है, इसलिए आपको इसके लिए एक बड़ा वॉल्यूम होना चाहिए एक मुद्दा (इन शर्तों के तहत अधिकतम वॉल्यूम आकार) 16TiB है)।

अधिकतम फ़ाइल और वॉल्यूम आकार दोनों के साथ (अभी भी प्रयोगात्मक) btrfs में 16EiB की भारी मात्रा है।

NTFS के तहत कुछ मामलों में अधिकतम फ़ाइल लंबाई अधिकतम वॉल्यूम लंबाई से बड़ी है।

अधिक जानकारी के लिए प्रारंभिक बिंदु:
http://en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Show

आभासी उपकरण

जैसा कि हाल ही में टिप्पणियों में उल्लेख किया गया है, आभासी उपकरणों के लिए अतिरिक्त विचार हैं:

  • आभासी रूप से आवंटित वर्चुअल डिस्क के लिए अन्य तरीके जैसे कि जिनके द्वारा उपयोग किया जाता है वे zerofreeतेज़ होंगे (हालांकि इसके विपरीत catऔर ddयह एक मानक उपकरण नहीं है जिसे आप बहुत अधिक यूनिक्स-ए-जैसे ओएस में उपलब्ध होने पर भरोसा कर सकते हैं)।

  • विदित हो कि विरल वर्चुअल डिवाइस पर ब्लॉक को शून्य करना अंतर्निहित भौतिक डिवाइस पर ब्लॉक को मिटा नहीं सकता है, वास्तव में मैं यह कहना चाहूंगा कि यह संभावना नहीं है - वर्चुअल डिस्क मैनेजर ब्लॉक को केवल उतना ही बना देगा जितना अब उपयोग नहीं किया जाता है इसलिए इसे बाद में कुछ और के लिए आवंटित किया जा सकता है।

  • यहां तक ​​कि निश्चित आकार के आभासी उपकरणों के लिए, आपके पास कोई नियंत्रण नहीं हो सकता है कि डिवाइस भौतिक रूप से कहां रहता है इसलिए इसे अपने वर्तमान स्थान के आसपास या किसी भी समय भौतिक डिस्क के एक नए सेट पर ले जाया जा सकता है और सबसे अधिक आप मिटा सकते हैं वर्तमान स्थान है, नहीं किसी भी पिछले स्थानों में ब्लॉक अतीत में रह सकता है।

  • वर्चुअल डिवाइसेस पर उपरोक्त समस्याओं के लिए: जब तक आप होस्ट को नियंत्रित नहीं करते हैं और वीएम में डिस्क को पोंछने या वर्चुअल डिवाइस को इधर-उधर घुमाने के बाद उनके अनलॉकेटेड स्पेस का एक सुरक्षित वाइप कर सकते हैं, इसके बाद आप इसके बारे में कुछ नहीं कर सकते हैं तथ्य। एकमात्र सहारा शुरू से ही पूर्ण डिस्क एन्क्रिप्शन का उपयोग करना हैइसलिए कुछ भी अनएन्क्रिप्टेड भौतिक मीडिया के लिए पहली जगह में नहीं लिखा गया है। वीएम के भीतर अभी भी एक फ्री-स्पेस वाइप के लिए कॉल किया जा सकता है। यह भी ध्यान दें कि FDE विरल आभासी उपकरणों को बहुत कम उपयोगी बना सकता है क्योंकि वर्चुअलाइजेशन परत वास्तव में यह नहीं देख सकती है कि कौन से ब्लॉक अप्रयुक्त हैं। अगर OS ​​की फाइलसिस्टम लेयर ट्रिम कमांड्स को वर्चुअल डिवाइस (जैसे कि यह एक SSD है) भेजता है, और वर्चुअल कंट्रोलर इनकी व्याख्या करता है, तो इससे इसका समाधान हो सकता है, लेकिन मुझे किसी भी परिस्थिति का पता नहीं है जहां यह वास्तव में होता है और एक व्यापक उस पर चर्चा कहीं और के लिए एक मामला है (हम पहले से ही मूल प्रश्न के लिए विषय होने के करीब पहुंच रहे हैं, इसलिए अगर इससे आपकी रुचि कुछ प्रयोग और / या अनुवर्ती प्रश्न क्रम में हो सकते हैं)।


4
सरल शून्यिंग को जाहिरा तौर पर secure-deleteउपकरणों के साथ भी किया जा सकता है : sfill -llzपूरी प्रक्रिया को कम करके एक पास को पूरा किया जाता है जो केवल '0' लिखता है।
foraidt

इसमें कुछ समय लगता है। क्या यह वास्तव में सबसे तेज़ तरीका है? मैं डेटा के जीबी लेखन लगता है हमेशा एक समय लगेगा ...
endolith

2
@endolith: यदि आप एक सक्रिय फाइलसिस्टम पर खाली जगह खाली करना चाहते हैं तो आपको फाइल सिस्टम के माध्यम से उस डेटा को ओवरहेड लिखने की आवश्यकता नहीं है। Fnord_ix द्वारा सुझाए गए सुरक्षित-हटाए गए उपकरण तेज़ हो सकते हैं, क्योंकि वे इस प्रकार के कार्य के लिए अनुकूलित हैं।
डेविड स्पिललेट

2
@endolith: मैन पेज में वर्णन से मुझे उम्मीद है कि ज़ेरोफ्री का वैरिएंट केवल आबंटित आभासी डिस्क के लिए जल्दी है, वास्तव में यह वास्तविक या निश्चित-आकार-आभासी वाले पर धीमा हो सकता है अगर यह एक रीड-प्री-राइट कर रहा है यह पुष्टि करने के लिए कि ब्लॉक में कोई सामग्री नहीं है। वर्चुअल डिस्क के लिए गुब्बारा या तो नहीं होना चाहिए क्योंकि अधिकांश स्पर्स डिस्क ड्राइवर ऑल-ज़ीरो को "इस ब्लॉक को आवंटित नहीं करते" के रूप में लेते हैं। इसके अलावा, catऔर ddबहुत से किसी भी यूनिक्स-ए-जैसे ओएस पर उपलब्ध हैं क्योंकि उन्हें मानक उपकरण माना जाता है जहां zerofreeशायद ऐसा नहीं है जब तक कि इसे स्पष्ट रूप से जोड़ा नहीं गया हो।
डेविड स्पिल्ट

1
@endolith: कहा है ऊपर, zerofreeनिश्चित रूप से निश्चित रूप से काम करेगा, आदमी पेज (लगभग नहीं बल्कि काफी मेरे उदाहरण में small.file बेबात से कम) में में उल्लेख किया है "पूरे फाइल सिस्टम अस्थायी रूप से पूर्ण" बात है एक वास्तविक चिंता यदि आप वर्तमान में सक्रिय सिस्टम पर ऐसा कर रहे हैं, और zerofreeवास्तव में उस विशिष्ट उदाहरण में तेजी से होगा जो इसके लिए अनुकूलित है: स्पार्सली आवंटित वर्चुअल ब्लॉक डिवाइस। यद्यपि आप सुरक्षा उद्देश्यों के लिए किसी वर्चुअल डिवाइस पर किसी भी वाइप पर भरोसा नहीं कर सकते हैं: उस मामले में एकमात्र सही जवाब शुरू से फुल-डिवाइस-एनक्रिप्ट है।
डेविड स्पिललेट

45

चेतावनी

मैं हैरान था कि कितने फाइल फोटोरेक को मेरी डिस्क से मिटा सकते हैं, पोंछने के बाद भी।

चाहे "मुक्त स्थान" को भरने में अधिक सुरक्षा हो, केवल 1 बार 0x00 के साथ या 38 बार विभिन्न कैबलिस्टिक मानकों के साथ एक अकादमिक चर्चा का अधिक है। श्रेडिंग पर 1996 के सेमिनल के लेखक ने खुद को एक उपसंहार लिखा है कि यह आधुनिक हार्डवेयर के लिए अप्रचलित और आवश्यक है। डेटा को भौतिक रूप से प्रतिस्थापित शून्य और बाद में पुनर्प्राप्त किए जाने का कोई प्रलेखित मामला नहीं है।

इस प्रक्रिया में सही नाजुक लिंक फाइलसिस्टम है । कुछ फाइल सिस्टम विशेष उपयोग के लिए स्थान आरक्षित करते हैं, और इसे "मुक्त स्थान" के रूप में उपलब्ध नहीं कराया जाता है। लेकिन आपका डेटा हो सकता है । जिसमें तस्वीरें, व्यक्तिगत सादे-पाठ ईमेल शामिल हैं, जो भी हो। मैंने केवल आरक्षित + स्थान + ext4 को गुगला दिया है और यह जान लिया है कि मेरे homeविभाजन का 5% आरक्षित था। मुझे लगता है कि यह वह जगह है जहाँ photorecमेरे सामान का इतना पाया गया है। निष्कर्ष: श्रेडिंग विधि सबसे महत्वपूर्ण नहीं है, यहां तक ​​कि मल्टी-पास विधि अभी भी जगह में डेटा छोड़ती है

आप # tune2fs -m 0 /dev/sdn0इसे माउंट करने से पहले कोशिश कर सकते हैं । (यदि यह रिबूटिंग के बाद रूट विभाजन होगा, तो सुनिश्चित करें कि इसे चलाएं -m 5या -m 1इसे अनमाउंट करने के बाद)।

लेकिन फिर भी, एक तरह से या किसी अन्य, कुछ जगह बची रह सकती है।

एकमात्र सही मायने में सुरक्षित तरीका पूरे विभाजन को मिटा देना है, फिर से एक फाइल सिस्टम बनाना है, और फिर अपनी फ़ाइलों को बैकअप से पुनर्स्थापित करना है।


तेज़ तरीका (अनुशंसित)

जिस सिस्टम पर आप पोंछना चाहते हैं उस पर एक निर्देशिका से चलाएँ:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

नोट्स: छोटी फ़ाइल का उद्देश्य उस समय को कम करना है जब मुक्त स्थान पूरी तरह से शून्य हो; सिंक का उद्देश्य यह सुनिश्चित करना है कि डेटा वास्तव में लिखा गया है।

यह ज्यादातर लोगों के लिए काफी अच्छा होना चाहिए।

धीमा तरीका (पैरानॉयड)

उपरोक्त सफाई के बाद डेटा के बरामद होने का कोई दस्तावेज नहीं है। यह महंगा और संसाधन की मांग होगी, यदि संभव हो तो।

फिर भी, यदि आपके पास यह सोचने का कारण है कि गुप्त एजेंसियां ​​आपकी फ़ाइलों को पुनर्प्राप्त करने के लिए बहुत सारे संसाधन खर्च करेंगी, तो यह पर्याप्त होना चाहिए:

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

इसमें ज्यादा समय लगता है।

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

बहुत धीमा तरीका (पागल पागल)

यहां तक ​​कि कतरन पर 1996 के सेमिनल के लेखक ने यह कहते हुए एक उपसंहार लिखा कि यह आधुनिक हार्डवेयर के लिए अप्रचलित और आवश्यक है।

लेकिन अगर अभी तक आपके पास बहुत खाली समय है और आप बहुत अधिक ओवरराइटिंग के साथ अपनी डिस्क को बर्बाद करने का मन नहीं करते हैं, तो यह हो जाता है:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

नोट: यह अनिवार्य रूप से सिक्योर-डिलीट टूल के उपयोग के बराबर है।


सम्पादन से पहले, यह पोस्ट डेविड स्पिल्ट्स का पुनर्लेखन था। "कैट" कमांड एक त्रुटि संदेश उत्पन्न करता है, लेकिन मैं अन्य लोगों के पोस्ट पर टिप्पणी नहीं लिख सकता।


आप 50 प्रतिष्ठा वाले अन्य लोगों के पदों के तहत टिप्पणी कर सकते हैं ।
ग्नूपी

1
catआदेश अपनी दौड़ के अंत में, मेरे उदाहरण में एक "कोई जगह नहीं छोड़ दिया" त्रुटि देने के लिए उम्मीद है। यदि आप /dev/nullएक समस्या है, तो आप इसे stderr पर पुनर्निर्देशित करके छिपा सकते हैं । उपयोगी प्रगति संकेत प्राप्त करने के लिए मैं आमतौर पर इस तरह की चीज के pvबजाय catया ddइस तरह का उपयोग करता हूं ।
डेविड स्पिललेट

4
...raises the suspicion that it is actually encrypted data. You may die under torture for not revealing the decryption key.हे, मैं वास्तव में यही सोच रहा था। मुझे लगता है कि मेरा मतलब है कि मैं पागल हूँ ...
नवीन

2
रूट हमेशा आरक्षित स्थान का उपयोग करने में सक्षम होता है। इसलिए यदि आप अपने शून्य-भरण को रूट के रूप में करते हैं, तो आप 5% आरक्षित स्थान को भी भरने में सक्षम होंगे; ट्यून अनावश्यक है। यह अभी भी बोधगम्य है कि फाइलसिस्टम के अन्य हिस्सों में डेटा हो सकता है।
नैट एल्ड्रेडज

1
@NateEldredge क्या आपके पास कोई ऐसा स्रोत है जो यह बताता है कि ddरूट के रूप में रन रूट के ddबिना फाइल सिस्टम के अधिक से अधिक एक्सेस देता है ? मैं विश्वास करना चाहता हूं कि यह सच है, लेकिन फिलहाल कोई कारण नहीं देख सकता।
हाशिम

27

कम से कम उबंटू में ज़ीरोफ्री उपयोगिता है:

http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html

   zerofree — zero free blocks from ext2/3 file-systems

   zerofree  finds  the  unallocated, non-zeroed blocks in an ext2 or ext3
   filesystem (e.g. /dev/hda1) and fills them with zeroes. This is  useful
   if  the  device  on  which this file-system resides is a disk image. In
   this case, depending on the type of disk image, a secondary utility may
   be  able  to  reduce the size of the disk image after zerofree has been
   run.

   The usual way to achieve  the  same  result  (zeroing  the  unallocated
   blocks)  is to run dd (1) to create a file full of zeroes that takes up
   the entire free space on the drive, and then delete this file. This has
   many disadvantages, which zerofree alleviates:

      ·  it is slow;

      ·  it makes the disk image (temporarily) grow to its maximal extent;

      ·  it  (temporarily)  uses  all  free  space  on  the disk, so other
         concurrent write actions may fail.

   filesystem has to be unmounted or mounted  read-only  for  zerofree  to
   work.  It  will exit with an error message if the filesystem is mounted
   writable. To remount the  root  file-system  readonly,  you  can  first
   switch to single user runlevel (telinit 1) then use mount -o remount,ro
   filesystem.

ज़ेरोफ्री के बारे में इस लिंक को भी देखें: फाइलसिस्टम छवियों को रखना - यह इसके लेखक - रॉन यॉर्स्टन (9 अगस्त 2012) से है।


3
यह महत्वपूर्ण है कि फाइलसिस्टम को केवल काम करने के लिए ज़ीरोफ्री के लिए अनमाउंट या माउंटेड पढ़ना होगा।
एंटोनियोके

1
रूट फाइल सिस्टम पर यह कैसे करना है, इसके बारे में कुछ जानकारी शामिल करना अच्छा होगा। मेरी भावना यह है कि यह काम नहीं करेगा, क्योंकि आपको फाइल सिस्टम को अनमाउंट करना होगा, जबकि साथ में उक्त फाइल सिस्टम से टूल को चलाना होगा।
Ant6n

यह भी CentOS के साथ आता है
davidgo

3

यहाँ यह कैसे एक GUI के साथ करने के लिए है।

  1. ब्लीचबिट स्थापित करें
  2. एप्लिकेशन - सिस्टम टूल - व्यवस्थापक के रूप में ब्लीचबिट पर क्लिक करके रूट के रूप में चलाएं।
  3. वरीयताओं में, यह बताएं कि आपको कौन से रास्ते चाहिए। आम तौर पर यह उन्हें अच्छी तरह से अनुमान लगाता है। आप प्रत्येक विभाजन के लिए एक लेखन योग्य पथ शामिल करना चाहते हैं। आम तौर पर वह / घर / उपयोगकर्ता नाम और / tmp होता है, जब तक कि वे एक ही विभाजन नहीं होते हैं, जिस स्थिति में सिर्फ एक को चुना जाता है।
  4. बॉक्स सिस्टम की जांच करें - फ्री डिस्क स्पेस मिटाएं।
  5. हटाएँ पर क्लिक करें।

डीडी पर ब्लीचबिट का अग्रिम (जो अन्यथा बहुत अच्छा है) डिस्क के पूर्ण होने पर, ब्लीचबाइट इनोड्स को मिटाने के लिए छोटी फाइलें बनाता है (जिसमें फ़ाइलनाम, जैसे मेटाडेटा शामिल हैं)।


अपने स्वयं के लिए ड्राइव से फ्रीस्पेस को पोंछने के लिए ब्लीचबिट के ओपनसोर्स पायथन कोड का निरीक्षण करें।
शैडबेक

2

मैं ddखाली स्थान को भरने के लिए एक या अधिक बड़ी फ़ाइलों को आवंटित करने के लिए उपयोग करता हूं , फिर एक सुरक्षित विलोपन उपयोगिता का उपयोग करता हूं ।

Dd try के साथ फाइल आवंटित करने के लिए:

dd if=/dev/zero of=delete_me bs=1024 count=102400

यह एक फ़ाइल उत्पन्न करेगा जिसका नाम delete_me100 एमबी है। (यहां bs1k पर "ब्लॉक आकार" सेट है, और countआवंटित करने के लिए ब्लॉकों की संख्या है।)

फिर अपनी पसंदीदा सुरक्षित डिलीट यूटिलिटी का उपयोग करें (मैं उपयोग कर रहा हूं shred) तो बनाई गई फाइलों पर।

लेकिन ध्यान दें: बफरिंग का मतलब है कि अगर आप पूरी डिस्क करते हैं, तो भी आपको पूरी तरह से सब कुछ नहीं मिल सकता है!


यह लिंकscrub फ्री स्पेस वाइपिंग के लिए सलाह देता है। यह कोशिश नहीं की है।


ओह, अगर स्मृति मेरी सेवा करती है, तो मैंने scrubएक बार कोशिश की और इसने पूरे फाइल-सिस्टम को दूषित कर दिया। सौभाग्य से मेरे पास परीक्षण फ़ाइल-प्रणाली पर पहले प्रयोग करने का अच्छा अर्थ था, मेरे वास्तविक डेटा पर नहीं।
बारूदी

2

शीर्ष गति पर ड्राइव मिटाएं।

आजकल एक ड्राइव को एन्क्रिप्ट करने के लिए विशिष्ट निर्देश आपको पहले ड्राइव को WIPE करने के लिए कहेंगे।

नीचे दी गई कमांड आपके ड्राइव को एईएस सिफरटेक्स्ट से भर देगी।

यदि आपको अपने मुख्य बूट ड्राइव को पोंछने की आवश्यकता है, तो एक लाइव सीडी का उपयोग करें।

एक टर्मिनल खोलें और अपने विशेषाधिकार बढ़ाएँ:

sudo bash

हमें सुरक्षित रहने के लिए सिस्टम पर सभी ड्राइव्स की सूची दें:

cat /proc/partitions

नोट: /dev/sd{x}उस उपकरण से बदलें जिसे आप पोंछना चाहते हैं।

चेतावनी: यह शौकीनों के लिए नहीं है! आप अपने सिस्टम को unbootable बना सकते हैं !!!

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}

मैं इस बात से स्तब्ध हूं कि यह कितना तेज है।


2

आपके पास संभवतः आपके सिस्टम पर पहले से ही GNU कोरुटिल्स पैकेज स्थापित है। यह कमांड को श्रेड प्रदान करता है ।


4
श्रेड अप्रयुक्त डिस्क स्थान को पहले फाइलों में बनाने के बिना साफ नहीं करेगा ...
dmckee

2

आप सुरक्षित विलोपन पैकेज का उपयोग करके अपने खाली स्थान को मिटा सकते हैं।

उस पैकेज में आप sfillटूल पा सकते हैं , जो डेटा को हटाने के लिए डिज़ाइन किया गया है, जो उपलब्ध तरीके से माध्यमों पर सुरक्षित तरीके से उपलब्ध है, जो चोरों, कानून प्रवर्तन या अन्य खतरों से उबर नहीं सकता है।

लिनक्स (उबंटू) में सुरक्षित डिलीटेशन पैकेज स्थापित करने के लिए, इसे निम्न कमांड द्वारा स्थापित करें:

$ sudo apt-get install secure-delete

फिर अपने डेटा को खाली स्थान न मिटाने के लिए , निम्न आदेश आज़माएँ:

sfill -f -v -ll /YOUR_MOUNTPOINT/OR_DIRECTORY

जहाँ / Your_MOUNTPOINT / OR_DIRECTORY आपके माउंट पॉइंट ( df -h; mount) या फ्री स्पेस को पोंछने के लिए डायरेक्टरी है।

मैन्युअल को http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html पर पढ़ें


1

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

याद रखें, cia / fbi / nsa does not के पास एक फैंसी मशीन है जो आपके चुंबकीय मीडिया बिट्स की वास्तविक स्थिति को पढ़ सकती है। यह सब बहुत समय पहले लिखा गया एक कागज़ था। एक "क्या-अगर"। आपको केवल 1 समय पोंछना होगा।


1
आपके द्वारा कही गई कुछ दिलचस्प बातें हैं, लेकिन क्या वास्तव में इस जानकारी को वापस करने के लिए आपके पास कोई स्रोत हैं? यह विश्वास करना कठिन है कि सभी ओवरराइटिंग बेकार है। इसके अलावा, कृपया अपनी पोस्ट में सुधार करें, इस तरह विराम चिह्न के साथ पढ़ना मुश्किल है।
ग्रोनोस्तज

@gronostaj: "यह एक मिथक डेटा है जिसे कई बार लिखा जाना चाहिए" आधुनिक ड्राइव के लिए कम से कम कई अध्ययनों से यह दावा किया गया है। गुटमैन द्वारा अनुशंसित सभी 30+ पास की अब आवश्यकता नहीं है, जैसा कि लेखक ने खुद स्वीकार किया है।
करण

1

आसान स्क्रब का उपयोग करना है :

scrub -X dump

यह dumpवर्तमान स्थान में एक फ़ोल्डर बनाएगा और डिस्क के पूर्ण होने तक फ़ाइल बनाएगा। आप -pविकल्प के साथ एक पैटर्न चुन सकते हैं ( nnsa|dod|bsi|old|fastold|gutmann)।

स्क्रब स्थापित करना आसान नहीं है ( इस पर उबंटू फ़ोरम देखें ), लेकिन एक बार इंस्टॉलेशन होने के बाद, आपके हाथ में एक बहुत ही सरल और कुशल टूल है।


यदि स्मृति मेरी सेवा करती है, तो मैंने scrubएक बार कोशिश की और इसने पूरी फाइल-प्रणाली को दूषित कर दिया। सौभाग्य से मेरे पास परीक्षण फ़ाइल-प्रणाली पर पहले प्रयोग करने का अच्छा अर्थ था, मेरे वास्तविक डेटा पर नहीं।
Landroni

नहीं जानते कि आपने क्या किया या क्या हुआ, लेकिन मूल रूप से फाइल सिस्टम भरने तक स्क्रब मूल रूप से नई फ़ाइल बनाते हैं। यह मौजूदा फाइल के साथ नहीं खेलता है, न ही यह उनमें से किसी को डिलीट करता है (कम से कम जो कमांड मैंने दी है) नहीं ...
FMaz008

1
वास्तव में। कोशिश की है scrub -X dump_dirऔर यह अच्छी तरह से काम किया है लगता है। BTW, Ubuntu 14.04 पर स्थापित करना बहुत सीधा है apt-get install scrub:।
लैंडरोनी

1

यहां "sdelete.sh" स्क्रिप्ट है जिसका मैं उपयोग करता हूं। विवरण के लिए टिप्पणियाँ देखें।

# Install the secure-delete package (sfill command).

# To see progress type in new terminal:
# watch -n 1 df -hm

# Assuming that there is one partition (/dev/sda1). sfill writes to /.
# The second pass writes in current directory and synchronizes data.
# If you have a swap partition then disable it by editing /etc/fstab
# and use "sswap" or similar to wipe it out.

# Some filesystems such as ext4 reserve 5% of disk space
# for special use, for example for the /home directory.
# In such case sfill won't wipe out that free space. You
# can remove that reserved space with the tune2fs command.
# See http://superuser.com/a/150757
# and https://www.google.com/search?q=reserved+space+ext4+sfill

sudo tune2fs -m 0 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

sudo sfill -vfllz /

# sfill with the -f (fast) option won't synchronize the data to
# make sure that all was actually written. Without the fast option
# it is way too slow, so doing another pass in some other way with
# synchronization. Unfortunately this does not seem to be perfect,
# as I've watched free space by running the "watch -n 1 df -hm"
# command and I could see that there was still some available space
# left (tested on a SSD drive).

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

sudo tune2fs -m 5 /dev/sda1
sudo tune2fs -l /dev/sda1 | grep 'Reserved block count'

1

मुझे एक सरल समाधान मिला जो लिनक्स पर और मैकओएस पर काम करता है। अपने डिस्क के रूट फ़ोल्डर में जाएं और इस कमांड को लॉन्च करें:

for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;

जहाँ // DISKSPACE // आपकी हार्ड डिस्क के GB में आकार है।


0

मैं कभी-कभी इस बैश वन-लाइनर का उपयोग करता हूं:

while :; do cat /dev/zero > zero.$RANDOM; done

जब यह कहना शुरू हो जाता है कि डिस्क भरी हुई है, तो बस Ctrl+ दबाएं Cऔर बनाई गई zero.*फ़ाइलों को हटा दें ।

यह किसी भी सिस्टम पर काम करता है, जो भी फ़ाइल आकार सीमा है।
किसी भी cat: write error: File too largeत्रुटि को अनदेखा करें ।


0

यह कोई जवाब नहीं है! उपयोग करने के इच्छुक लोगों के लिए बस एक टिप्पणी pv... ताकि मतदान को परेशान न करें।

पर लिनक्स टकसाल 17.3 आप उपयोग कर सकते हैं pv( पाइप दृश्य ) लेखन की प्रगति प्राप्त करने के लिए। उदाहरण के लिए:

# Install pv (pipe view)
sudo apt-get install pv

# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file

यहां लाभ यह है कि आपको एक प्रगति बार, ईटीए और लगातार अद्यतन डेटा दर मिलती है। नुकसान यह है कि यह एक पंक्ति पर लिखा जाता है और जब डिस्क भरा होता है (एक त्रुटि लौटाता है) यह गायब हो जाता है। ऐसा इसलिए होता है क्योंकि पूर्ण आकार अनुमानित है क्योंकि ओएस डिस्क का उपयोग करेगा, जबकि यह बहुत लंबा ऑपरेशन हो रहा है, खासकर ओएस वॉल्यूम पर।

पर एक बहुत पुरानी HD, मैं एक डाटा दर प्राप्त के बारे में 13 MB / s का उपयोग कर /dev/urandom, और के बारे में 70 MB / s , का उपयोग करते समय /dev/zero। यह संभवत: एक कच्चे ddया का उपयोग करते समय आगे सुधार होगा cat, और नहीं pv


-13

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


22
पूर्व फ़ाइल सामग्री के संचित विखंडू अभी भी डिस्क पर बने रहते हैं, और अर्थहीन से दूर हैं यदि कच्चे डिस्क डेटा की सीधे जांच की जाती है।
एलेक्स बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.