मैं डिस्क स्थान का उपयोग कैसे कम करूं


29

मेरी एक मशीन 2GB EeePC सर्फ है , जो बहुत ही सीमित संसाधनों के साथ एक साफ सुथरी नेटबुक है। इतना सीमित है कि अभी, मेरे पास 22 एमबी मुक्त स्थान बचा है।

इस पर, मैं Open Box DE के साथ Arch Linux चला रहा हूं और इसके लिए आवश्यक अनुप्रयोगों के एक मेजबान को मोबाइल पीसी के रूप में कार्य करने के लिए।

कुछ अनावश्यक उपयोग किए गए स्थान पर मुहर लगाने के लिए कौन से तरीके उपलब्ध हैं?


@Stefan इसमें कितना RAM है? (सिर्फ सोच अगर यह राम में / tmp की तरह बातें डाल करने के लिए संभव है)
xenoterracide

1
@Stefan भी ... यदि आप प्रायोगिक मार्ग पर जाने के लिए तैयार हैं ... btrfs माना जाता है कि वह एक संपीड़ित फ़ाइल सिस्टम का समर्थन करता है (या जा रहा है?) हो सकता है कि बाहर की जाँच करें
xenoterracide

@stefan यह भी du -sh /देखने के लिए कि आपके अधिकांश स्थान का उपयोग कहां किया जा रहा है।
xenoterracide

@xeno, 490MB RAM और यह du -sh /*?
स्टीफन

@Stefan तो यह है ... उफ़ ... आप कर सकते हैं cd /और चलाने के लिए du -sh *और नीचे ड्रिल ... (आप वास्तव में इसमें स्टोर करने के लिए पर्याप्त राम नहीं है)
xenoterracide

जवाबों:


19

यहां कुछ बिंदु दिए गए हैं जिनसे आप शुरू कर सकते हैं:

  • अपने सिस्टम पर स्थापित पैकेजों पर एक नज़र डालें pacman -Qऔर उन लोगों को हटा दें जिनकी आपको आवश्यकता नहीं है। -t स्विच शुरू करने के लिए एक अच्छी शुरुआत हो सकती है :

    किसी भी वर्तमान में स्थापित पैकेज के लिए आवश्यक पैकेज के लिए आउटपुट को प्रतिबंधित या फ़िल्टर नहीं करें।

  • पैकेमैन के पैकेज कैश को साफ करें pacman -Sc

  • हमेशा pacman -Rsअप्रयुक्त पैकेज निर्भरता को हटाने के लिए उपयोग करें।

  • "बड़ी फ़ाइलों" और फ़ोल्डरों को खोजने के लिए जो डिस्क के बड़े हिस्सों का उपयोग करते हैं, एक अच्छा जोड़ duहै xdiskusage। यह छोटा उपकरण आपको जल्दी से अपने फाइल सिस्टम को ब्राउज़ करने देता है और फ़ोल्डरों के डिस्क उपयोग का चित्रमय प्रतिनिधित्व करता है।


pacman -ccमुझे लगता है कि स्थापित पैकेज सहित पूरे कैश को साफ करने के लिए। सामान्य रूप से अनुशंसित नहीं है क्योंकि आप बाद में बैकअप के रूप में चाहते हैं।
xenoterracide

@xeno, मैं पहले से ही अपने डेस्कटॉप पर एक diretory माउंट करता हूं --cachedir, इसलिए मुझे किसी भी pkg फ़ाइलों को रखने की आवश्यकता नहीं है।
स्टीफन

3
अंतरिक्ष को साफ़ करने के लिए /, मुझे pacgraphवास्तव में उपयोगी लगा। यह आपके स्थापित पैकेजों को आकार के आधार पर क्रमित कर सकता है, इसलिए आप इसे हटाने के लिए बेहतर समझ सकते हैं। (यह एसवीजी निर्भरता ग्राफ भी खींच सकता है, लेकिन सिर्फ कमांड लाइन से उपयोगी है।)
एनको

4
ncduके लिए एक अच्छा कमांड लाइन विकल्प है xdiskusageBaobab हालांकि इस उद्देश्य के लिए सबसे अच्छा चित्रमय ऐप है।
ज़ाज़

10

चेतावनी: ये विचार केवल उन उपयोगकर्ताओं के लिए हैं जो पूरे लिनक्स और आर्क लिनक्स दोनों में अच्छी तरह से वाकिफ हैं।

यदि आप खतरनाक क्षेत्र में चलने के लिए तैयार हैं, तो आप बेस को पतला कर सकते हैं जो 500MB से कम स्थापित हो। इसके लिए कुछ बहुत खतरनाक चीजें करने की आवश्यकता होती है:

  1. सभी अनावश्यक स्थानों को हटाना (पहले से ही कवर)
  2. आपके सिस्टम को चलाने के लिए कोई फ़र्मवेयर फाइल हटाने की ज़रूरत नहीं है (से /usr/lib/firmware)
  3. किसी भी कर्नेल मॉड्यूल को हटाने के लिए आपके सिस्टम को चलाने की आवश्यकता नहीं है (से /usr/lib/modules/...)
  4. किसी भी .aफाइल को हटाना /usr/lib(केवल यदि आप सॉफ्टवेयर को संकलित करने के लिए सिस्टम का उपयोग कभी नहीं करते हैं। ध्यान दें: इसमें उपयोग शामिल है makepkg)
  5. में सब कुछ हटाने /usr/include(केवल यदि आप सॉफ्टवेयर संकलन के लिए कभी भी सिस्टम का उपयोग नहीं करते हैं)
  6. /usr/share/docऔर से अनावश्यक दस्तावेज को हटाना/usr/share/info
  7. (बहुत बुरा विचार जब तक शायद एक सर्वर के लिए) से आदमी पृष्ठों को हटाने /usr/share/man
  8. (यह भी एक बुरा विचार) से अनावश्यक टर्मिनल /usr/share/terminfoविवरणकों और अनावश्यक समयक्षेत्र फ़ाइलों को हटाना/usr/share/zoneinfo
  9. (DANGEROUS) strip *निष्पादन योग्य बायनेरी ( /usr/binऔर /usr/sbin) वाले सभी फ़ोल्डरों पर चल रहा है
  10. (चरम स्थितियों में) एक उपकरण का उपयोग करके जैसे कि upxबड़े बायनेरिज़ को संपीड़ित करने के लिए (सांबा बायनेरिज़ खुद को इस तरह से उधार देते हैं, क्योंकि वे काफी बड़े होते हैं क्योंकि वे अक्सर सांख्यिकीय रूप से संकलित किए जाते हैं।) यह भी ध्यान दें कि उपयोग करने का upxअर्थ है कि संपूर्ण असम्पीडित बाइनरी में फिट होना चाहिए। निष्पादन के दौरान रैम, इसलिए कम रैम वाले सिस्टम पर थके हुए हो।

इससे पहले कि आप ऐसा करें, अपने सिस्टम का एक पूर्ण बैकअप बनाएं। लिनक्स शुक्र है कि यह अपेक्षाकृत आसान है - यदि आप एक बाहरी वॉल्यूम (जैसे एक यूएसबी ड्राइव) को संलग्न कर सकते हैं और माउंट कर सकते हैं तो आप cd / && tar -cf /mnt/usb/mySystem.tar /पूरे सिस्टम का बैकअप लेने के लिए कुछ कर सकते हैं ।

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

कृपया यह भी ध्यान दें कि कोई भी पैकेज अपग्रेड आपके द्वारा हटाए गए कई फाइलों को पुनर्स्थापित कर सकता है। यदि आप इस मार्ग पर जाने का निर्णय लेते हैं, तो आप अंततः अनचाही फाइलों को हटाने और हर प्रमुख पैकेज के उन्नयन के बाद अपनी स्क्रिप्ट चलाने की इच्छा कर सकते हैं। (उदाहरण: कर्नेल को अपग्रेड करना सभी कर्नेल मॉड्यूल को वापस लाएगा और साथ ही निर्भरता के माध्यम से अपग्रेड करके लिनक्स-फर्मवेयर पैकेज को फर्मवेयर के सभी में वापस लाएगा /usr/lib/firmware।)

अंत में, नजर रखें /var/logक्योंकि समय के साथ पत्रिका की फाइलें बढ़ेंगी। आप पिछली पत्रिकाओं को निकाल सकते हैं, लेकिन rm *\@*.journalअपने जर्नल फ़ोल्डर में कुछ ऐसा करके वर्तमान को बनाए रख सकते हैं ।

मैंने इन तकनीकों का उपयोग करके महीनों के लिए 512MB डिस्क-ऑन-मॉड्यूल डिवाइस से NAS सर्वर को सफलतापूर्वक चलाया है, हालांकि वे अभी भी दिल के बेहोश होने के लिए नहीं हैं। (मैंने केवल 128 एमबी स्टोरेज में एक समान प्रोजेक्ट बनाने के लिए LinuxFromScratch का उपयोग किया है, लेकिन यह एक और कहानी है ...)


संपादित करें / ADD:

यहाँ कुछ अतिरिक्त तरीकों को प्राप्त करने का प्रयास करने के लिए उपयोग किए जा सकते हैं:

  • छुटकारा पाना libgolibgoपुस्तकालय के साथ आता है gcc-libsऔर AFAIK केवल जाओ भाषा में लिखे गए अनुप्रयोगों के द्वारा प्रयोग किया जाता है। मैं किसी भी ऐसे अनुप्रयोग के बारे में नहीं सोच सकता जिसका उपयोग मैं उस पुस्तकालय की आवश्यकता के लिए करता हूं। मेरे सिस्टम पर इसका आकार 40 एमबी है। जब आप नीचे की ओर पतला होने की कोशिश कर रहे हैं, तो यह बहुत अधिक जगह है। मैंने इसे अपने "मिनी" से हटा दिया है, मैं जो कुछ भी करता हूं, उस पर कोई बुरा प्रभाव नहीं डालता (लेकिन फिर से, यही है, YMMV!)

  • सिकुड़ जाना libicudata.so। यह मेरे सिस्टम पर 27MB है। यह मूल रूप से एक टन के यूनिकोड / लोकेल डेटा को लाइब्रेरी ऑब्जेक्ट में संपीड़ित करता है। एक उपकरण ऑनलाइन है जो इस फ़ाइल के छोटे संस्करणों को बना सकता है, लेकिन इसे वर्तमान संस्करण के लिए अपडेट नहीं किया गया है (और आप नई रिलीज़ में पुरानी फ़ाइलों का उपयोग नहीं कर सकते।) मैंने इसे हाथ से करने की कोशिश नहीं की है, लेकिन अगर आप यह पता लगा सकते हैं कि कैसे, आप इस फाइल को लगभग 20-22MB तक शेव कर सकते हैं।

  • यदि आप पायथन का उपयोग करते हैं, तो आप python2 testसे पुस्तकालय को हटाकर 37MB या तो बचा सकते हैं : rm -r /usr/lib/python2.7/testऔर python3 के लिए इसे हटाकर लगभग 66MB rm -r /usr/lib/python3.6/test:।

  • फिर से पायथन के लिए, आप .pyoफ़ाइलों और फ़ाइलों से छुटकारा पा सकते हैं .py.pyoफ़ाइलों "अनुकूलित" हैं, लेकिन अजगर कभी नहीं वास्तव में उन्हें का उपयोग करता है। .pyफ़ाइलों मानक पुस्तकालय के लिए कच्चे स्रोत कोड है। पायथन कोड चलाते समय केवल पायथन आमतौर पर पढ़ता है .pyc(अजगर संकलित) फाइलें है। cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;तथाcd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • अनावश्यक लोकेल डेटा को हटाना। वहाँ एक AUR पैकेज कहा जाता है localepurgeजो इसे स्वचालित करता है। अन्यथा, आपको अंदर खेलना होगा /usr/share/locale। आप अपनी खुद की स्थान रखने के लिए और की जरूरत है locale.alias। मुझे अमेरिका में यहाँ के लिए, रखने en_USऔर locale.aliasऔर सब कुछ किसी और 80MB के बारे में बंद मुंडा को हटाने।

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

या, शायद किसी को एक आर्क "वितरण" है कि का उपयोग करता है एक साथ रखा जाना चाहिए uClibcया diet-libcया कुछ इसी तरह। यह एक मजेदार समर प्रोजेक्ट हो सकता है। :-)


2
मैं ऐसा करने में दिलचस्पी रखता हूं .. फर्मवेयर मेरे लिए सबसे बड़ा लाभ है, मैं एक छोटा सा योनि बॉक्स बनाने की कोशिश कर रहा हूं, इसलिए केवल वर्चुअलबॉक्स पर आर्च चलाने के लिए आवश्यक फर्मवेयर की आवश्यकता है ... क्या कोई आसान तरीका है क्या फर्मवेयर की आवश्यकता है?
टॉम बी

चेतावनी: बस कोशिश की upx, यह exectuables के सभी प्रकार के साथ अच्छी तरह से खेल नहीं है, पूर्व: यह mysqld और mongodb segfaulting छोड़ दिया
आयुष

3
पुन: पैकेज अपग्रेड आपके द्वारा हटा दी गई कई फ़ाइलों को पुनर्स्थापित कर सकता है । /Etc/pacman.conf को NoExtractपरिभाषाओं के साथ विस्तारित करके (कई बार परिभाषित किया जा सकता है) आप उस समस्या को स्थायी रूप से हल कर सकते हैं। केवल एक ही अद्यतन Realtek निक ड्राइवरों को अद्यतन करने के लिए एक उदाहरण:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
प्रो बैकअप

find /usr/lib/firmware -atime +3030 दिनों में एक्सेस न होने वाली फ़र्मवेयर फाइलें मिलेंगी। उन फाइलों को हटाना सुरक्षित होना चाहिए।
user202729

5

TLDR

journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*

सबसे पहले, सिस्टम पर क्या बड़ा है

du -d1 -h / 2>/dev/null | sort -h

यह / आप में दो स्तरों को नीचे कर सकते हैं सबसे बड़ी dirs की एक क्रमबद्ध सूची से पता चलता है :

du -d2 -h / 2>/dev/null | sort -h

मेरा परिणाम है:

0       /proc
0       /sys
0       /tmp
12K     /dev
12K     /srv
16K     /lost+found
632K    /run
4.3M    /boot
13M     /opt
15M     /etc
75M     /root
93M     /home
2.4G    /var
3.2G    /usr
221G    /mnt
227G    /

मैं अनदेखा करता हूं /mnt(क्योंकि यह एक बाहरी ड्राइव है) दो डायर दिमाग में खड़े हैं: varऔर usr। आइए देखें कि अंदर क्या है:

du -d1 -h /var /usr 2>/dev/null | sort -h

फिर, थोड़ा गहरा:

du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h

लॉग से शुरू करते हैं

मेरे पास 717mb है /var/log

मैं निर्देशिकाओं को बेतरतीब ढंग से हटाने का प्रशंसक नहीं हूं, तो चलिए इसे साफ तरीके से करते हैं:

$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.

चलो केवल 100 ग्राम लॉग छोड़ते हैं:

journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.

यहाँ अधिक जानकारी के लिए यहाँ जौक्ट कॉन्फ़िगर कैसे करें

संकुल

मेरे पास है 660M /var/cache/pacman। यह 1.8gb था, लेकिन मैं pacman -Scअप्रयुक्त पैकेजों को हटाने के लिए दौड़ा । चलो बाकी को हटा दें:

pacman -Scc

/ Usr / share / स्थानीय

बहुत सारे उपयोगकर्ता इसे हटाते हैं, या कम से कम इसे साफ करते हैं। लेकिन मैं एक समस्या हो सकती है । लेकिन चेकआउट ब्लीचबिट (अगला पैराग्राफ)।

Bleachbit

स्वचालित क्लीनर । बहुत सारे सामान को हटा देगा, लेकिन इसके लिए ज्यादातर स्थान थे।

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

हटाने के लिए आप और अधिक सामान देख सकते हैं:

bleachbit --list
bleachbit -p thunderbird.*

काफी कम आर्क लिनक्स 64-बिट इंस्टॉलेशन पर, ब्लीचबिट पैकेज का कुल स्थापित आकार 209.70 MiB है:Total Installed Size: 209.70 MiB
प्रो बैकअप

1
युक्ति: यदि आप निर्देशिका du -xkd1में करते /हैं, तो यह अन्य माउंटपॉइंट में नहीं उतरेगा।
fdmillion

3

Ubuntu के साथ मेरी Eeepc में 4GB डिस्क पर इसने कुछ लोकल फाइल्स (/ usr / शेयर / लोकेल से) और Gnome हेल्प फाइल्स (/ usr / share / gnome / help /) को हटाने में मदद की। दोनों उन भाषाओं के लिए स्थापित किए गए थे जिनका मैं उपयोग नहीं करता। यकीन नहीं है कि अगर आर्क लिनक्स उन सभी फ़ाइलों को भी स्थापित करता है, हालांकि।


हाँ ... du -hs /usr/share/localeलगभग 300 एमबी है ... क्या मैं केवल rm -rfअनावश्यक फ़ाइलें कर सकता हूँ ?
स्टीफन

2
@Stefan wiki.archlinux.org/index.php/Locale यदि आप संपादित करते हैं /etc/locale.genऔर पुनः चलाते हैं locale-gen, तो आपके पास पहले से संकलित स्थान कम होने चाहिए। यदि आप अधिक स्वचालित तरीके से स्थान खाली करना चाहते हैं, तो आप aur.archlinux.org/packages.php?ID=11975 पर भी प्रयास करना चाह सकते हैं । (लेकिन यह असमर्थित है और अगर यह आपके सिस्टम को तोड़ता है, तो आपको टुकड़े रखने के लिए मिल जाते हैं।)
अल्पकालिक १६'१०

1
लोकलप्रेग एक स्क्रिप्ट है जो अनावश्यक स्थानों के लिए व्यर्थ डिस्क स्थान को हटाने के लिए है। संपादित करें /etc/locale.nopurge पहले :) इसने ~ 300 MB को पहली बार साफ़ किया और मैंने इसे प्रत्येक महीने में दर्जनों MB किया। AUR में उपलब्ध है।
tuk0z

0

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

find , | , logrotate , mail, crontab

मैं आपको चम्मच से दूध पिलाने नहीं जा रहा हूं। मैंने पहले भी ऐसा किया है और इसके साथ काफी सफल रहा हूं और बाद में इसे समाप्त कर दिया गया क्योंकि हमने nagiosनिगरानी के लिए जाने का फैसला किया क्योंकि यह एक कॉर्प सर्वर में उस तरह का सामान करने के लिए अधिक ट्यून किया गया था। मुझे लगता है कि यदि mailकमांड आपके लिए पहले से कॉन्फ़िगर नहीं है, तो आप पा सकते हैं कि सबसे कठिन आराम सीधे आगे होना चाहिए। यह सब बश स्क्रिप्टिंग के माध्यम से और क्रोन जॉब में डालने और हर एक्स दिनों को चलाने की जरूरत है। बैश स्क्रिप्टिंग सीखें, यह न केवल इसके लिए बल्कि आपके जीवन को * निक्स के साथ आसान बनाने के लिए बहुत उपयोगी होगा। इसलिए अपने पसंदीदा इंटरनेट सर्च इंजन का उपयोग करें और उपरोक्त कमांड और बैश स्क्रिप्टिंग के बारे में पढ़ें। और उन्हें एक साथ बाँध लें और उसका परीक्षण करें। एक बार संतुष्ट होने के बाद नियमित उपयोग करें। मुझे विश्वास है कि ऐसा करने में मज़ा आएगा। यदि आपने पहले इस तरह का काम नहीं किया है तो आप बहुत कुछ सीखेंगे।

  • उम्मीद है की वो मदद करदे

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