मैं पूरी तरह से निर्देशिका पेड़ को कैसे पुनरावृत्ति करूं?


47

मेरे पास एक डाइरेक्टरी ट्री है जिसे मैं लिनक्स 'श्रेड' की उपयोगिता से जोड़ना चाहूंगा। दुर्भाग्य से, श्रेय के पास -Rपुनरावर्ती कतरन के लिए कोई विकल्प नहीं है।

मैं एक पूरी निर्देशिका ट्री को पुनरावर्ती रूप से कैसे काट सकता हूं?

जवाबों:


45

पुनरावर्ती रूप findसे निष्पादित करने के लिए कमांड का उपयोग करें shred:

find <dir> -type f -exec shred {} \;

क्या यह -depth विकल्प के बिना काम करता है? क्या यह आधुनिक, जर्नलिंग फ़ाइल सिस्टम पर काम करता है?
उपयोगकर्ता अज्ञात

@userunknown नहीं, श्रेड आधुनिक जर्नलिंग फ़ाइल सिस्टम पर काम नहीं करता है। अधिक सटीक जानकारी के लिए, कृपया देखें man shred
फैनटैड

यह भी ध्यान दें कि यह विधि फ़ाइल नाम को मिटाने का भी प्रयास नहीं करेगी , इसलिए इस तरह संग्रहीत किसी भी डेटा को निश्चित रूप से पीछे छोड़ दिया जाएगा ( srm@ कुकी के उत्तर से कम से कम इस समस्या को हल करने का प्रयास किया जाएगा)।
ntninja

-exec shred {} +इसे और तेज़ बनाने के लिए उपयोग करें क्योंकि श्रेड कई तर्कों को स्वीकार करता है।
सुमित

28

कतरे से सावधान!

श्रेड-मैनपेज से:

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

  • लॉग-संरचित या जर्नल फ़ाइल सिस्टम, जैसे कि AIX और सोलारिस (और JFS, ReiserFS, XFS, Ext3, आदि) के साथ आपूर्ति की गई।

  • फ़ाइल सिस्टम जो अनावश्यक डेटा लिखता है और भले ही कुछ लिखने में विफल रहता है, जैसे कि RAID-आधारित फ़ाइल सिस्टम

  • फाइल सिस्टम जो स्नैपशॉट बनाते हैं, जैसे कि नेटवर्क उपकरण का एनएफएस सर्वर

  • फ़ाइल सिस्टम जो अस्थायी स्थानों में कैश करते हैं, जैसे कि एनएफएस संस्करण 3 क्लाइंट

  • संकुचित फ़ाइल सिस्टम

एक्सट 3 फाइल सिस्टम के मामले में, उपरोक्त डिस्क्लेमर केवल डेटा = जर्नल मोड में लागू होता है (और श्रेड इस प्रकार सीमित प्रभावशीलता का है), जो केवल मेटाडेटा के अलावा डेटा फाइल करता है। दोनों डेटा = ऑर्डर किए गए (डिफ़ॉल्ट) और डेटा = राइटबैक मोड्स में, श्रेड हमेशा की तरह काम करता है। Ext3 जर्नलिंग मोड डेटा को जोड़कर / a / etc / fstab फ़ाइल में किसी विशेष फ़ाइल सिस्टम के लिए माउंट विकल्पों में से कुछ विकल्प को माउंट मैन पेज (मैन माउंट) में प्रलेखित किया जा सकता है।

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

समाधान: एक एन्क्रिप्टेड फ़ाइल सिस्टम का उपयोग करें, और बस अपनी फ़ाइलों को हटा दें।


श्रेडर पर सूचक के लिए +1, मेरे पास पहले भी ऐसा ही मामला था। यह नेटएप के एनएफएस पर काम नहीं करता था। नेटएप WAFL का उपयोग करता है और जो कॉपी-ऑन-राइट का उपयोग करता है, जिसमें मेटाजोरनॉलिंग भी शामिल है, इसलिए यह सही है। नवीनतम सोलारिस जेडएफएस के साथ भी एक और मामला है, जहां शेड शेड है।
निखिल मुल्ले

6
यह एक बुरा उपाय है। एक एन्क्रिप्टेड फ़ाइल सिस्टम केवल तभी तक सुरक्षित है जब तक कि यह लॉक हो जाता है (और इतना अनमाउंट)। जैसे ही आपका OS उठ रहा है और चल रहा है, डेटा अप-टू-ग्रेब हो जाता है।
सलेक

3
@oleks: shredडेटा एन्क्रिप्शन के उपयोग और डेटा को रोकने के लिए ऑफलाइन स्टोरेज डिवाइस (थिंक चोरी या पुलिस) से डेटा को पढ़ने से रोकते हैं, जिसमें सभी फ़ाइलों की सुरक्षा का अतिरिक्त लाभ होता है, न कि केवल (ठीक से) डिलीट किए जाने पर। एक बार जब फ़ाइल सिस्टम आरोहित हो जाता है तो हम किसी भी स्थिति में अच्छे ol 'unix परमिशन पर वापस आ जाते हैं और डेटा सुरक्षा फिर से OS सुरक्षा और उचित सिस्टम एडमिनिस्ट्रेशन का कार्य बन जाता है। अपस्ट्रीम फाइलसिस्टम एन्क्रिप्शन निश्चित रूप से रणनीतिक उपयोग की तुलना में आराम से डेटा की रक्षा करने में बदतर नहीं है shred!
ntninja

12

इसके बजाय सुरक्षित डिलीट का उपयोग करें।

sudo apt-get install secure-delete
srm -r pathname

किया हुआ। सिक्योर डिलीट श्रेड की तुलना में बहुत अधिक पागल है, 38 के बजाय 38 पास का उपयोग करता है। एक फास्ट सिंगल पास करने के लिए, उपयोग करें

srm -rfll pathname

fll आपको एक कम यादृच्छिक डेटा जनरेटर, और केवल एक पास देता है।


क्या यह unix.stackexchange.com/a/27075/18886 में वर्णित समस्या को हल करता है ?
इयान डन

यह कैसे हो सकता है? नहीं
कुकी

ध्यान दें कि इस पद्धति का प्रस्तावित- findआधारित विधियों पर अतिरिक्त लाभ है जो फ़ाइलों को रद्दी करने और उन्हें हटाने से पहले संग्रहीत फ़ाइलनामों को मिटाने का भी प्रयास करेगा।
ntninja 13

@ntninja खोज-आधारित विधियों में श्रेड और श्रेड का उपयोग होता है जो फ़ाइलों को हटाने से पहले फ़ाइलों का नाम बदल देता है। तो वही लाभ सही?
tuxayo

11

इस स्टैक ओवरफ्लो लिंक का उपयोग करके श्रेड के लिए सबसे अच्छे ज्ञात विकल्पों के साथ इस उत्तर को जोड़ना ' स्थायी रूप से फाइल को हटाना और सुरक्षित रूप से एनओएसओएस पर :'

find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;

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

यदि संभव हो, तो खोज कमांड को फ़ाइल पर एक शेल स्क्रिप्ट को कॉल करना चाहिए जो चलता है:

shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file

प्रत्येक फ़ाइल पर।


कई उत्तरों को पढ़ने और शोध करने के बाद, मैंने पाया (इस) इस उत्तर को पूरी तरह से देखा जा सकता है। मैं केवल इसे जोड़ना चाहूंगा कि चूंकि श्रेड निर्देशिकाओं को नहीं हटाता है, जो मैंने rm -rvf $1शेल स्क्रिप्ट में जोड़ा है (जहां $ 1 / पथ / से / आपके / फ़ाइल को {}विस्तार से पारित किया गया है find... -exec)
JoelAZ

4
श्रेड पहले से ही प्रत्येक पास के बाद एक fsync (2) करता है। सटीक रूप से क्योंकि आपको फ़ाइल परिवर्तनों को अगले पास से पहले डिस्क तक पहुंचने के लिए मजबूर करने की आवश्यकता है।
.ngel

depthयहाँ क्या करता है? अनुगामी
बैकलैश के

5
find /your/directory -exec shred {} \;

अपवित्र, लेकिन जेम्स ने आपको स्वीकार करने के लिए एक मिनट से हराया।
स्टीव वी।

क्या यह -depth विकल्प के बिना काम करता है? क्या यह आधुनिक, जर्नलिंग फ़ाइल सिस्टम पर काम करता है?
उपयोगकर्ता अज्ञात

3
find [dirname] -depth -type f -exec shred -n1 {} \;

यह डायरेक्टरी [dirname] में फाइलों के लिए गहराई से पहली खोज करता है, फिर shred -n1प्रत्येक फाइल पर कमांड चलाता है । फ़ाइलों और / या निर्देशिकाओं को हटाते समय, -depthडिफ़ॉल्ट के रूप में जोड़ना एक अच्छी आदत है, भले ही इस मामले के लिए इसकी सख्त आवश्यकता नहीं है। rm -rfइसके बजाय इस प्रकार की कमांड चलाने के दौरान shred, -depthयह सुनिश्चित करने की आवश्यकता होती है कि निर्देशिकाओं की सामग्री को हटाने से पहले निर्देशिकाओं को हटाया नहीं जाता है (इस प्रकार त्रुटियां पैदा होती हैं)।


3
आपको उपयोग करना चाहिए shred -N 1, क्योंकि डिफ़ॉल्ट, 3 बार श्रेडिंग, साँप का तेल है। या तो एक समय पर्याप्त है, या 30 बार काम नहीं करेगा।
उपयोगकर्ता अज्ञात

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

0

shredमैंने पाया है कि निर्देशिका को भी हटाने के लिए findएक पूरी तरह से विधि है, जिसमें एक स्क्रिप्ट को कॉल करना है shred:

  • फ़ाइल को अधिलेखित करें
  • सिंक
  • फिर हटाएं
  • और अंत में आरएम को निर्देशिका नाम हटाने के लिए कहते हैं।

यह विधि भी उन में रिक्त स्थान के साथ फ़ाइल नाम को ठीक से संभालती है।

पहला - shredस्क्रिप्ट (मैंने अपना नाम दिया है dirShredder.shऔर इसे /rootनिर्देशिका में संग्रहीत किया है :

shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories

फिर, इस तरह से स्क्रिप्ट को कॉल करें:

find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;

killit.shफ़ाइल निष्पादन योग्य ( chmod +x) को चिह्नित करना सुनिश्चित करें और निश्चित रूप से उस डायर के लिए पथ को अपडेट करें जिसे आप बिखरना चाहते हैं और dirShredder.shयदि आप कहीं और स्टोर करते हैं।

NOTA BENE - shredकॉपी-ऑन-राइट फाइलसिस्टम (ZFS, BTRFS, et al) और यहां तक ​​कि जर्नलिंग फाइल सिस्टम पर भी समस्याएँ हैं। इससे निपटने के लिए कोई वास्तविक "सर्वश्रेष्ठ" तरीका नहीं है जो मैंने "एन्क्रिप्टेड फाइल सिस्टम" के अलावा पाया है, लेकिन मुझे यकीन नहीं है कि यह वास्तव में प्रभावी है।
निकटतम यह लगता है कि आप प्राप्त कर सकते हैं ड्राइव पर सभी खाली जगह को अपने डेटा के साथ खाली करने के बाद आपके श्रेडिंग ऑप्स (शून्य नहीं है, ऐसा लगता है कि यह हमेशा विश्वसनीय नहीं होता है।) इसके अलावा, SSDs के अन्य विचार भी हो सकते हैं (जैसे TRIM।)

मैं उन लोगों में नहीं जा रहा हूं, अन्य स्टैक उत्तर हैं (उदाहरण के लिए इस प्रश्न में @user अज्ञात उत्तर) और 'नेट में बहुत सारे चर्चाएं हैं जो इन विषयों को कवर करती हैं इसलिए उन्हें खोज करें यदि आपको सुरक्षा के उस स्तर की आवश्यकता है।

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