स्वच्छ $ घर निर्देशिका


17

कुछ वर्षों के दौरान, मेरी $HOMEनिर्देशिका में बहुत सारी छिपी हुई फाइलें और निर्देशिकाएँ दिखाई दीं।

मैं अनावश्यक लोगों को लगातार हटाना चाहूंगा।

मैं कैसे पता लगा सकता हूं कि कौन से एप्लिकेशन ने उन छिपी हुई फाइलों और निर्देशिकाओं को बनाया है।

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


2
यह पता लगाना कि कौन से एप्लिकेशन ने फ़ोल्डर और फ़ाइलों को बनाया, मुश्किल हो सकता है। आमतौर पर सभ्य डेवलपर्स द्वारा बनाए गए ऐप्स से जुड़ी फाइलों को सीधा करना सीधा है, लेकिन ऐसा हमेशा नहीं होता है। यदि आप एक अच्छा जवाब पाते हैं, तो मैं एक के लिए जानना चाहूंगा कि यह क्या है।
0xSheepdog

2
@ 0xSheepdog भविष्य के लिए ऑडिट - इतिहास के लिए, बहुत ज्यादा कुछ नहीं।
जेनी डी

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

1. क्या आप लिनक्स का उपयोग कर रहे हैं? कौन सा कर्नेल संस्करण? (मेजर / माइनर ओनली प्लीज) 2. क्या SELinux सक्षम है या आप इसे सक्षम कर सकते हैं? 3. क्या आपके पास रूट एक्सेस है?
ओथियस

जवाबों:


15

आप उन्हें अस्थायी रूप से विस्थापित कर सकते हैं।

cd ~
mkdir .trash
find . ! -name . -prune ! -type d -atime +365 -exec \
    sh -c 'touch -a -- "$@"
           mv -- "$@" ~/.trash
    ' --   {} +

आपकी $HOMEनिर्देशिका में सभी फाइलें मिलेंगी - बिना बाल निर्देशिकाओं में पुनरावृत्ति के - जिन्हें एक वर्ष तक एक्सेस नहीं किया गया है। यह अभी उन सभी के लिए पहुँच समय को अपडेट करेगा, और फिर उन सभी को नामित निर्देशिका में ले जाएगा .trash। यदि आप इसे चलाने के समय के बीच किसी भी समस्या का सामना करते हैं और जो भी समय आप पुरानी फ़ाइलों को हटाने के लिए शुरू करने का निर्णय लेते हैं, ~/.trashतो आप उनमें से कुछ को वापस लेने का प्रयास कर सकते हैं और देख सकते हैं कि क्या आप उन कूड़ेदानों में से किसी को भी इसका कारण बना सकते हैं।


हालांकि यह तकनीकी रूप से सवाल का जवाब नहीं देता है, मुझे लगता है कि यह एक बहुत अच्छा समाधान है।
जेसी के

1
@JesseKeilson - मुझे लगता है कि यह है कि यह करता है तकनीकी रूप से सवाल का जवाब: मुझे यकीन है कि यह छिपा फ़ाइलों और निर्देशिकाओं और महत्वपूर्ण खो जाएगा कुछ भी नहीं और उन पर निर्भर करता है काम करना बंद नहीं होगा कुछ भी नहीं निकालना सुरक्षित है कैसे हो सकता है?
mikeserv

1
कुछ फाइलसिस्टम "नोएटाइम" विकल्प के साथ मुहिम की जाती है। Atime को कभी भी संशोधित नहीं किया जाएगा, भले ही MIME या CIME हो। यह आपके खोज को गलत तरीके से हाल की फ़ाइलों को स्थानांतरित करने की ओर ले जाएगा।
एड्रिएन एम।

@AdrienM। - यह सच है। द्वारा और बड़े, हालांकि, हर सेंस एफएस मैं relatimeइसके बजाय उपयोग के साथ संपर्क में आता हूं । से man mount:: relatimeअपडेट या समय बदलने के सापेक्ष इनसाइड एक्सेस बार अपडेट करें। एक्सेस समय केवल तभी अपडेट किया जाता है यदि पिछला एक्सेस समय वर्तमान संशोधित या परिवर्तन समय से पहले था। (इसी तरह noatime, लेकिन यह muttउन अन्य अनुप्रयोगों को नहीं तोड़ता है, जिन्हें यह जानने की जरूरत है कि क्या कोई फाइल पिछली बार संशोधित होने के बाद से पढ़ी गई है।) और वैसे भी, w / modtime का उपयोग करने -mऔर -mtimeकाम करने के लिए। या जो भी आपको अच्छा लगे।
15

यह प्रश्न के ' और निर्देशिकाओं ' भाग का उत्तर नहीं देता है । इसके लिए आपको प्रत्येक .directory को चलना होगा, और सभी फाइलों को एक वर्ष से अधिक पुराना होने की आवश्यकता होगी।
n

6

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

यदि आपके पास रूट एक्सेस नहीं है, तो आप अपने होमडिर में lsof & grep फ़ाइलों को चलाने के लिए एक अनंत लूप + स्लीप के साथ क्रॉस्टैब या स्क्रिप्ट का उपयोग कर सकते हैं । देखें lsof का पेज । हालाँकि, यह केवल आपके अनुप्रयोगों को प्रदर्शित करेगा जिनके पास एक लॉज़िस्फोर है जिसे आप lsof लॉन्च करते हैं। क्या किसी एप्लिकेशन को कोई फ़ाइल खोलनी चाहिए, उसे संपादित करना चाहिए, फिर उसे बंद कर देना चाहिए, आपको यह परिवर्तन lsof में नहीं दिखेगा।

इस तरह एक लाइनर को काम करना चाहिए: lsof -u $(id -u) 2>/dev/null |grep -P $HOME'/[^\s]*$'

एक और तरीका है उपयोग करने के लिए है inotify कर्नेल एपीआई जब एक फ़ाइल तक पहुंचा जा रही है जांच करने के लिए। काश, यह एक async प्रणाली है, और आपके पास "क्या ऐप", "ठीक है जब", "क्या उपयोगकर्ता" जैसे विवरण नहीं होंगे। आपको केवल "इस फ़ाइल को संशोधित / एक्सेस किया गया ..." के बारे में कॉलबैक होगा। कुछ एप्लिकेशन (Inotify, FAM, gamin) आपको एपीआई तक सरल पहुंच प्रदान करता है


मैंने केवल inotifyट्रिगर करने के लिए उपयोग करने का प्रयास किया lsof। इस विचार के काम करने के लिए प्रणाली बस बहुत तेज़ है: प्रक्रिया अक्सर चली जाती है या फ़ाइल को बंद करने से पहले बंद कर दिया जाता है। कुछ मामलों में, यह अभी भी काम कर सकता है, लेकिन शायद बहुत कम।
ओथियस

ऑडिट यह एकमात्र प्रणाली है जो आपको कुछ भी याद किए बिना सभी विवरण प्रदान करती है, क्योंकि यह कर्नेल में विशिष्ट कोड पथ का उपयोग कर रहा है। अन्य सभी उपकरण जानकारी से चूक जाएंगे, प्रक्रिया के रूप में डेटा छूट जाएगा / fd बंद हो जाएगा।
एड्रिएन एम।

माना। मैं सिर्फ परीक्षण करने के लिए inotify डाल रहा था और पुष्टि कर रहा था कि यह वास्तव में यहाँ आवश्यक काम नहीं करेगा।
ओथियस

3

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

इसके बजाय मैं सुझाव देता हूं कि ब्लीचबिट , एक इंटरैक्टिव जीयूआई प्रोग्राम जो क्रूफ को हटाने के लिए है।

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