रूट ड्राइव डिस्क स्थान से बाहर चल रहा है। मैं अंतरिक्ष को कैसे मुक्त कर सकता हूं?


35

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

एक और विचार यह है कि मैं एक MySQL डेटाबेस सर्वर पर काम कर रहा हूं। सर्वर रूट निर्देशिका में ही स्थापित है, इसलिए मैं किसी भी डेटा को खोने का जोखिम नहीं लेना चाहता।

कृपया मुझे इस समस्या को हल करने में मदद करने के लिए कुछ सुझाव दें।

जवाबों:


36

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

  1. साफ apt-get cache। निम्नलिखित कमांड apt-get cache निर्देशिका से सभी डाउनलोड की गई डेब्यू फ़ाइलों को हटा देगा।

    यह आदेश चलाएँ: sudo apt-get clean

  2. चाल / घर माउंट बिंदु अलग ड्राइव करने के लिए । पहले, मेरा होम फोल्डर रूट ड्राइव पर स्थित था। इसलिए मैंने अपने होम फोल्डर को अलग ड्राइव में स्थानांतरित कर दिया। इसने मुझे रूट माउंट से बहुत तनाव छोड़ने में मदद की क्योंकि अधिकांश एप्लिकेशन अपने डेटा को / home / user_name / फ़ोल्डर में संग्रहीत करते हैं। अलग-अलग ड्राइव पर होम फ़ोल्डर को स्थानांतरित करने का तरीका पढ़ें

  3. रूट विभाजन का आकार बढ़ाएं मुझे पता है कि यह बहुत स्पष्ट जवाब है। लेकिन मेरा विश्वास करो, समय के साथ हमारे डेटा में बदलाव की जरूरत है। मैंने सोचा कि 20 जीबी / रूट माउंट पर्याप्त होगा, लेकिन एक वर्ष के साथ मैंने अपने रूट माउंट को फिर से आकार दिया है और 50 जीबी तक बढ़ा दिया है।


8
सुदत्त apt-get clean ने उम्मीद से ज्यादा जगह खाली कर दी, +1
btk

खबरदार जो apt-get cleanसंस्थापित संकुल को भी हटाता है। आप अपग्रेड फेल होने की स्थिति में उन्हें रखना चाह सकते हैं।
टिम जूल

मैंने अपना कैश साफ़ किया और इसने 10 Gb तक की निकासी की! +1
नुमेरी का कहना है कि मोनिका

28

मैंने पुराने कमांडरों और छवियों को हटाकर 3.5 जीबी को सफलतापूर्वक साफ कर दिया है, निम्नलिखित कमांड का उपयोग करके:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

आप जाँच कर सकते हैं कि किन पैकेजों को कमांड के पहले भाग को निष्पादित किया जाएगा:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

संदर्भ


अन्य युक्तियों ने मदद नहीं की, लेकिन इसने मुझे 5G के आसपास बचा लिया। धन्यवाद।
बाल्टसवेज़्स

-yApt-get कमांड में विकल्प वास्तव में आवश्यक नहीं है। यदि आप इसे छोड़ देते हैं तो उपयुक्तता आपसे (केवल एक बार) पूछेगी, यदि सभी पाइप किए गए पैकेजों को हटा दिया जाना चाहिए। Imho यह उपयोग नहीं करने के लिए बेहतर है -y, यह आपको जांच करने के लिए एक और संभावना देता है (ऊपर उल्लिखित दूसरी कमांड के अलावा)। मेरे लिए यह रूट विभाजन पर 15GB मुक्त हो गया!
बोरिस डैपेन

2
कमांड dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge ने मेरे सिस्टम में वर्तमान में स्थापित कर्नेल संस्करण को हटाने की कोशिश की। सावधान रहें कि अपने सिस्टम को अनबूटेबल न बनाएं।
एंटनी

@Antony yaikes! मैं यह कोशिश करने वाला था। मैं कैसे सत्यापित कर सकता / सकती हूं जिसे हटाना ठीक है
सोनिक सोल

2
@SonicSoul मैं अंत में नीचे दिए गए उत्तरों में से एक ( askubuntu.com/a/778442/333806 ) का क्या कर रहा है, यह बताता है। मूल रूप से, uname -rवर्तमान कर्नेल को खोजने के लिए भाग गया और इसे हटाने के लिए ध्यान नहीं दिया। यदि यह homebrandजांचने के लिए कि कौन से पैकेज को शुद्ध किया जाएगा, यह बताने के लिए प्रदान किया गया कमांड चालू कर्नेल नहीं दिखाता है, तो आपको उसके द्वारा बताए गए शुद्ध कमांड को चलाना सुरक्षित होना चाहिए।
एंटनी

22

dpkg-queryसबसे बड़े पैकेज खोजने और उन लोगों को हटाने के लिए उपयोग करें जिनकी आपको अब आवश्यकता नहीं है ( स्रोत ):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'

1
अब यह वास्तव में उपयोगी वन-लाइनर है। सबसे बड़ी संस्थापित संकुल के त्वरित सारांश के लिए बिल्कुल सही। मेरे dotfiles पर आओ!
बजे

आप के साथ इस प्राप्त कर सकते हैंwajig sizes
पाब्लो एक

13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.

19
आप कोई स्पष्टीकरण नहीं देते हैं। अगर किसी को अपने कोड को कॉपी / पेस्ट करना था, तो सिस्टम बिना किसी चेतावनी के बंद हो जाएगा, जिससे संभवतः डेटा का नुकसान हो सकता है। कृपया वे क्या करते हैं, इस बारे में कोई स्पष्टीकरण दिए बिना आदेश नहीं देते हैं। -1
जो-एर्लेंड शिनस्टैड

9
फाइलसिस्टम की जाँच की आवश्यकता क्यों है?
नाथन उस्मान

10

पुराने कर्नेल संस्करणों को हटाना (जैसा कि होमब्रांड द्वारा पहले ही सुझाया गया है ) यदि आप अभी तक ऐसा करने के लिए नहीं हैं, तो अंतरिक्ष की एक अच्छी मात्रा को मुक्त कर सकते हैं।

पुराने कर्नेल संस्करणों को हटाने के कई तरीके हैं और विभिन्न विकल्पों की एक श्रृंखला पोस्ट किए गए उत्तरों में पाई जा सकती है: बूट मेनू को साफ करने के लिए मैं पुराने कर्नेल संस्करण कैसे निकालूं?

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

टर्मिनल खोलें और अपने वर्तमान कर्नेल की जाँच करें:

uname -r

इस तरह से याद मत करो!

इसके बाद, अपने सिस्टम पर सभी स्थापित गुठली देखने / सूचीबद्ध करने के लिए नीचे दी गई कमांड टाइप करें।

dpkg --list | grep linux-image

उन सभी कर्नेल को खोजें जो आपके वर्तमान कर्नेल से कम हैं। जब आप जानते हैं कि किस कर्नेल को निकालना है, तो इसे निकालने के लिए नीचे जारी रखें।

आपके द्वारा चयनित कर्नेल को निकालने के लिए नीचे दी गई कमांड को चलाएं।

sudo apt-get purge linux-image-x.x.x.x-generic

जवाब तब 'अपडेट-ग्रब 2' के लिए कहता है जब आप पर्सिंग खत्म कर लेते हैं, जो अब पुराने होने की संभावना है: sudo update-grub इसके बाद Ubuntu 14.04 के लिए पर्याप्त होना चाहिए। फिर वे 'अपने सिस्टम को रिबूट' करने के लिए कहते हैं (जो ऐसा प्रतीत होता है ताकि आप साफ किए गए बूट मेनू को देख सकें) इसलिए इस मामले में यह आवश्यक नहीं है।

ग्रब बूट लोडर मेनू मुख्य पृष्ठ पर सभी पुराने कर्नेल संस्करण दिखाते थे, लेकिन अब उन्हें उप-मेनू के पीछे से बाहर रखा गया है। यह बहुत अधिक है, लेकिन उबंटू / लिनक्स के लिए एक नवागंतुक को पता नहीं हो सकता है कि वे वहां जगह ले रहे हैं।

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

ऐसा करने के लिए तेज़ तरीके हैं, लेकिन मैं इस पद्धति की सादगी को मुख्य रूप से पसंद करता हूं क्योंकि मैं प्रत्येक कमांड को रास्ते से समझ सकता हूं:

"मैं क्या कर्नल संस्करण का उपयोग कर रहा हूँ? क्या संस्करणों कर्नेल मेरे पास है? ठीक है कर पर्ज कि एक है।"

कुल्ला, दोहराएं, उस स्थान की प्रशंसा करें जिसे आपने मुक्त किया है।

यह उन विशिष्ट पुराने कर्नेल के नाम की प्रतिलिपि बनाना काफी आसान है जिन्हें dpkg --list | grep linux-imageआप टर्मिनल में आपको देने वाले परिणामों से हटाना चाहते हैं , और फिर sudo apt-get purgeकॉपी किए गए नाम का उपयोग करें और पेस्ट करें।

3 या 4 पुराने गुठली को हटाने से आमतौर पर आपके रूट ड्राइव में लगभग एक जीबी जगह खाली हो जाएगी।


1
Linux-image के अलावा, आप linux-headers के लिए grep और purge भी कर सकते हैं
kdopen

8

जब मुझे इस कमांड का उपयोग करने वाले सर्वर पर अधिक खाली स्थान बनाने की आवश्यकता होती है:

find / -type f -size +50M -exec du -h {} \; | sort -n

यह 50 एमबी से बड़ी सभी फाइलों को ढूंढता है और " du -h" फाइल की बेहतर सूची बनाता है और "sort -n"पाइप बनाने के बाद सूची को फ़ाइल आकार के अनुसार क्रमबद्ध किया जाता है।


आपका सिस्टम कितना बड़ा है, इसके आधार पर इसमें कुछ समय लग सकता है। मुझे एक HDD
गेब्रियल फेयर

7

उबंटू समुदाय डॉक्स पर निर्देशों के बाद मैंने एक बड़े पैमाने पर कचरा फ़ाइल की खोज की - यह /var/log/syslog.1 के बैकअप की तरह लग रहा था, संभवतः कुछ उत्पादन के भार को syslog को उगल रहा था ...

जो आदेश मिला, वह था:

sudo find / -size +1G

और फिर किसी फोल्डर में कोई भी बड़ी फाइल जिसे .Trashडिलीट करना अच्छा लगता है ...


5

यहाँ एक स्क्रिप्ट है जिसे मैं रूट विभाजन पर खाली स्थान पर चलाता हूं

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}

संपादित करें: नई 2 लाइनें पुराने कर्नेल क्लीनर
cmak.fr 15

धन्यवाद! "पुराने लॉग को घुमाएं और हटाएं" मेरे ड्राइव पर कई गिग्स को साफ़ करें।
साता

अच्छा लगा। डेवलपर्स अपनी अप्रयुक्त डॉकटर छवियों को भी हटाना चाहते हैं :docker system prune
पाब्लो ए

@ पाब्लो ए वे भी देख सकते /var/crash/*.crashहैं
cmak.fr

चूंकि आपको sudoफ़ंक्शन को कॉल करने की आवश्यकता है, फ़ंक्शन के sudoभीतर अनावश्यक लगता है। यह भी vacuum-time=1sहमेशा काम नहीं कर सकता है लेकिन मुझे यकीन नहीं है क्योंकि मैं इसके बजाय वैक्यूम आकार का उपयोग करता हूं: forum.manjaro.org/t/…
WinEunuuchs2Unix

2

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

एप्लिकेशन एक विशिष्ट फ़ोल्डर में स्थापित नहीं हैं, जैसे आप सुझाव देते हैं। एप्लिकेशन के विभिन्न हिस्सों को फाइलसिस्टम के विभिन्न हिस्सों में रखा गया है। मुख्य कार्यक्रम आमतौर पर / usr / bin में रखा जाता है, जबकि कॉन्फ़िगरेशन फ़ाइलों को उदाहरण के लिए / etc में रखा जाता है। आपके मामले में, MySQL, डेटाबेस खुद को / var में कहीं रखा गया है। मुझे लगता है / var / mysql।

चूंकि / usr और / var दोनों रूट फाइलसिस्टम में डायरेक्टरी हैं, वे रूट फाइल सिस्टम स्पेस का उपयोग करेंगे। लेकिन जैसा कि मैंने कहा, आप उन्हें विभिन्न फाइल सिस्टम में स्थानांतरित कर सकते हैं। MySQL के मामले में, आप कॉन्फ़िगर कर सकते हैं जहाँ डेटाबेस संग्रहीत हैं। आप आसानी से डेटाबेस को उदाहरण के लिए /home/username/.mysql/dat डेटाबेस पर ले जा सकते हैं।


1

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

टिप्पणियों से:

  • कॉपी करते समय अनुमतियों को सुरक्षित रखें, यानी यदि आप अनिश्चित हैं कि आपकी फाइल मैनेजर क्या करेगी तो कमांड लाइन का बेहतर उपयोग करें।

  • इसका सही तरीका, एक नई फाइलसिस्टम / usr या उपयोग को माउंट करना है mount --bind। यह स्पष्ट नहीं है कि सिम्लिंक कितनी अच्छी तरह काम करेगा।


चाल / usr के बारे में सावधान। एक ही अनुमति के साथ usr फ़ोल्डर की प्रतिलिपि बनाने के लिए cp कमांड का उपयोग करें। फिर मूल / usr फ़ोल्डर को हटाएं और usr फ़ोल्डर का लिंक बनाएं /।
शांतनु

1
इसमें एक आरोह बिंदु होना चाहिए। लिंक नहीं है।
जो-एर्लेंड शिनस्टैड

छोटे नोट: बहुत सारे एप्लिकेशन भी बायनेरिज़ और एप्लिकेशन डेटा इंस्टॉल करते हैं /opt
नाथन उस्मान

@ जॉर्ज-एडीसन खैर, कुछ एप्लिकेशन /opt"नियमों" के खिलाफ सामान स्थापित करते हैं।
जनवरी

1

यदि आपके पास अलग-अलग फ़ाइल सिस्टम हैं, तो निम्न चाल आसान साबित हो सकती है: माउंट / एक और समय, लेकिन इस समय के तहत / mnt। अब आपकी सभी बड़ी या कई फाइलों को खोजा जा सकता है, बिना गलत फाइलसिस्टम को ट्रेस किए।

यह आपको उन फ़ाइलों को खोजने में भी मदद कर सकता है जो किसी अन्य माउंट के नीचे छिपी हुई हैं।



0

यदि आपके पास mssql डेटाबेस सर्वर स्थापित है, जो आपकी मेमोरी खा सकता है। NCurses डिस्क उपयोग चलाएँ

$ sudo ncdu / 

यह जांचने के लिए कि कौन से फ़ोल्डर और फाइलें अधिकतम स्टोरेज ले रही हैं। Mssql डेटा को आमतौर पर संग्रहीत किया जाता है

/var/opt/mssql/backup/

प्रश्न बताता है कि डेटाबेस को बने रहने की आवश्यकता है।
स्टीफन राउच

प्रश्न में MySql डेटाबेस का उल्लेख किया गया है ताकि यदि वह MsSQL डेटाबेस डेटा को हटा दे तो मुझे लगता है कि यह एक उचित जवाब लगता है।
योगेश

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