Disk alanı kullanımını nasıl minimize ederim?


29

Makinelerimden biri, çok sınırlı kaynakları olan zarif bir netbook olan 2 GB EeePC Surf . Şimdilik sınırlı, şu anda 22 MB boş alanım var .

Üzerinde Openbox DE ile Arch Linux kullanıyorum ve bunun bir mobil bilgisayar olarak çalışması için gerekli uygulamaların bir dizi var.

Gereksiz kullanılmış alanların damgalanması için hangi yöntemler kullanılabilir?


@Stefan ne kadar RAM var? (Sadece / tmp gibi şeyler koç içinde koymak mümkün olup olmadığını merak)
xenoterracide 14:10

1
Eğer ... btrfs sözde bir sıkıştırılmış dosya sistemini deneysel yoluna devam etmeye istekli destekler sizsiniz, (? Ya gidiyor) ise de ... belki bu out @Stefan
xenoterracide

@stefan du -sh /, alanınızın çoğunun nerede kullanıldığını da görmek için.
xenoterracide

@ xeno, 490MB RAM ve bu du -sh /*?
Stefan

@Stefan yapabilirsiniz ait o ... ayy ... yani cd /ve çalışma du -sh *ve detaya (Eğer gerçekten mağaza şeyler için yeterli ram yok) ...
xenoterracide

Yanıtlar:


19

İşte başlayabileceğiniz bazı noktalar:

  • Sisteminizde kurulu olan paketlere bir göz atın ve pacman -Qihtiyacınız olmayanları kaldırın. -t Anahtarın eklenmesi iyi bir başlangıç ​​olabilir :

    Çıktıyı, şu anda kurulu olan herhangi bir paket tarafından gerekmeyen paketlerle sınırlayın veya filtreleyin.

  • Pacman paketinin önbelleğini temizle pacman -Sc

  • pacman -RsKullanılmayan paket bağımlılıklarını kaldırmak için daima kullanın .

  • Diske, güzel bir ek büyük parçaları kullanın "büyük dosyalar" ve klasörleri bulmak için duolduğunu xdiskusage. Bu küçük araç, dosya sisteminize hızlı bir şekilde göz atmanızı ve klasörlerin disk kullanımının grafik gösterimini görmenizi sağlar.


pacman -ccsanırım yüklü paketleri de içeren tüm önbelleği temizlemek için. Bunları daha sonra yedekleme olarak isteyebileceğinizden normalde önerilmez.
xenoterracide

@xeno, zaten masaüstüme bir boşluk yükledim --cachedir, bu yüzden pkg dosyalarını tutmama gerek yok.
Stefan

3
Boş alan açmak için gerçekten yararlı /buldum pacgraph. Yüklü paketlerinizi boyuta göre sıralayabilir, böylece neyin çıkarılmasının anlamlı olacağını daha iyi önceliklendirebilirsiniz. (SVG bağımlılık grafiklerini bile çizebilir, ancak yalnızca komut satırından kullanışlıdır.)
Anko

4
ncdubunun alternatifi serin bir komut satırıdır xdiskusage. Baobab bu amaç için bugüne kadar en iyi grafik uygulama olsa da.
Zaz

10

UYARI: Bu fikirler yalnızca hem Linux'ta hem de Arch Linux'ta iyi anlaşılmış kullanıcılar içindir.

Tehlikeli bölgeye adım atmaya istekliysen, temel bir Arch kurulumunu kurulu 500 MB'den daha az olacak şekilde zayıflatabilirsin. Bu çok tehlikeli şeyler yapmayı gerektirir:

  1. tüm gereksiz yerel ayarların kaldırılması (zaten kapsanmış)
  2. Sisteminizi çalıştırmak için gerekli herhangi bir yazılım dosyaları kaldırarak (dan /usr/lib/firmware)
  3. Sisteminizi çalıştırmak için gerekli herhangi bir çekirdek modülleri kaldırarak (dan /usr/lib/modules/...)
  4. herhangi kaldırarak .adosyaları /usr/lib(. Eğer derleme yazılım sistemi kullanmak asla sadece not: bu kullanarak içerir makepkg)
  5. her şeyi kaldırma /usr/include(yalnızca yazılımı derlemek için sistemi kullanmazsanız)
  6. gereksiz dokümanları /usr/share/docve/usr/share/info
  7. (Bir sunucu için belki ÇOK KÖTÜ IDEA) man sayfalarını kaldırma /usr/share/man
  8. (ayrıca kötü bir fikir) gereksiz terminal tanımlayıcılarını /usr/share/terminfove gereksiz zaman dilimi dosyalarını/usr/share/zoneinfo
  9. (TEHLİKE) çalıştırılabilir strip *ikili dosyalar ( /usr/binve /usr/sbin) içeren tüm klasörler üzerinde çalışıyor
  10. gibi bir araç kullanarak (aşırı durumlarda) upxbüyük ikilileri sıkıştırmak için (genellikle statik olarak derlenmektedir beri oldukça büyük olma eğilimi olarak Samba ikili de bu amaç için uygun.) Ayrıca kullanarak unutmayın upxvasıtaları tüm sıkıştırılmamış ikili sığması gerekir RAM yürütme sırasında, bu yüzden düşük RAM'li sistemlerde bıktınız.

HİÇBİR ŞEY yapmadan önce, sisteminizi tamamen yedekleyin. Linux neyse ki bunu göreceli olarak kolaylaştırıyor - eğer bir harici birim ekleyip takabiliyorsanız (örneğin bir USB sürücü) cd / && tar -cf /mnt/usb/mySystem.tar /tüm sistemi yedeklemek gibi bir şey yapabilirsiniz .

Bir kez daha, Linux iç dünyası ve Arch Linux hakkında derinlemesine bilgi, deneyim ve anlayışa sahip olmadığınız sürece, yukarıdakilerin (özellikle 7'den 9'a kadar) yapılması önerilmemektedir . Hemen hemen listelediğim dosyaların herhangi biriyle oynamak, bir sisteme korkunç şekillerde zarar verebilir; Sisteminizin belirli bir bellenim dosyasına, modülüne vb. İhtiyaç duyup duymadığını bilmiyorsanız, araştırmadan önce araştırma yapın. (Sisteminizin ihtiyaç duyduğu çekirdek modüllerini çıkarmanın, önyüklenebilir bir sisteme veya klavye / ağ kartı / ses / ekran / vb. Desteği olmayan bir sisteme veya her türlü açıklanamayan davranışa neden olabileceği konusunda uyarılmalıdır.)

Ayrıca, herhangi bir paket güncellemesinin yukarıda kaldırdığınız dosyaların çoğunu geri yükleyebileceğini ve geri yükleyebileceğini lütfen unutmayın. Bu rotaya gitmeye karar verirseniz, sonunda gereksiz dosyaların kaldırılmasını kodlamak ve her büyük paket güncellemesinden sonra komut dosyanızı çalıştırmak isteyebilirsiniz. (Örnek: çekirdeğin yükseltilmesi tüm çekirdek modüllerini geri getirecek, ayrıca linux bellenim paketine tüm bellenimi geri getiren bağımlılık yoluyla yükseltme yapacaktır /usr/lib/firmware.)

Son /var/logolarak, dergi dosyaları zamanla büyüyeceğinden emin olun. Geçmiş dergileri kaldırabilir, ancak rm *\@*.journaldergi klasörünüzdeki gibi bir şey yaparak güncel olanları saklayabilirsiniz .

Bu teknikleri kullanarak aylarca 512 MB Modül Diskli bir cihazda NAS sunucusunu başarılı bir şekilde çalıştırdım, ancak bunlar hala zayıf görünüyorlar. (Aynı zamanda sadece 128 MB depolama alanında benzer bir proje oluşturmak için LinuxFromScratch kullandım, ama bu başka bir hikaye ...)


DÜZENLEME / ADD:

Biraz daha fazla alan kazanmaya çalışmak için kullanabileceğiniz birkaç yöntem:

  • Kurtulmak libgo. libgoKütüphane ile gelir gcc-libsve AFAIK sadece Git dilinde yazılmış uygulamalar tarafından kullanılır. Bu kütüphaneye ihtiyaç duyan herhangi bir uygulamayı düşünemiyorum. Sistemimde boyutu 40 MB. Zayıflamaya çalışırken, çok fazla alan var. Yaptığım hiçbir şey üzerinde kötü bir etkisi olmayan "mini" kurulumlarımdan onu kaldırdım (ama yine de benim, YMMV!)

  • Küçülen libicudata.so. Sistemimde 27MB var. Temelde bir kütüphane nesnesine sıkıştırılmış bir ton unicode / yerel veridir. Çevrimiçi olarak bu dosyanın daha küçük sürümlerini yapabilen bir araç var, ancak mevcut sürüm için güncellenmedi (ve daha eski sürümleri daha yeni sürümlerde kullanamazsınız.) Bunu el ile yapmayı denemedim, ancak Nasıl olduğunu bulabilirseniz, bu dosyadan yaklaşık 20-22 MB tıraş edebilirsiniz.

  • Python kullanıyorsanız, kaldırarak 37MB kadar tasarruf edebilirsiniz testpython2 gelen kütüphane: rm -r /usr/lib/python2.7/testve python3 için kaldırarak 66MB hakkında: rm -r /usr/lib/python3.6/test.

  • Yine Python için .pyodosyalardan ve dosyalardan kurtulabilirsiniz .py. .pyoDosyalar dosyalar "optimize", ancak Python asla gerçekten bunları kullanır. .pyDosyalar standart kitaplığı için ham kaynak kodu vardır. Python kodunu çalıştırırken Python normalde okuyan tek dosya .pyc(python compiled) dosyalarıdır. cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;vecd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Gereksiz yerel verilerin kaldırılması. Bunu otomatikleştiren bir AUR paketi var localepurge. Aksi takdirde, içinde oynamalısınız /usr/share/locale. Kendi yerel ayarlarınızı korumanız gerekir locale.alias. Tutarak, burada ABD'de Benim için en_USve locale.aliasve başka 80MB hakkında tıraş herşeyi kaldırarak.

Şimdi görmek istediğim, sisteminizi analiz eden ve hangi çekirdek modüllerine ihtiyacınız olduğunu ve ayrıca hangi donanım yazılımı dosyalarına ihtiyacınız olduğunu belirleyen bir araçtır. Bu klasörleri "güvenle" temizlemenin iyi bir yolu olurdu ...

Veya, belki de birileri, kullanan uClibcveya diet-libcbenzeri bir şey kullanan bir Arch "dağıtımını" bir araya getirmelidir . Bu eğlenceli bir yaz projesi olabilir. :-)


2
Ben de bunu yapmakla ilgileniyorum .. ürün yazılımı benim için en büyük kazancı gösteriyor, küçük bir serseri kutusu yapmaya çalışıyorum, bu yüzden sadece sanal kutuda arch çalıştırmak için gereken ürün bilgisine ihtiyacım var ... bulmanın kolay bir yolu var Hangi firmware gerekli?
Tom B

uyarı: yeni denedim upx, her türden exectuables ile iyi oynamıyor, örneğin: mysqld ve mongodb segfaulting'den ayrıldı
Ayush

3
re: Paket yükseltmeleri, çıkardığınız dosyaların çoğunu geri yükleyebilir ve geri yükleyebilir . /Etc/pacman.conf NoExtracttanımlarını (birden fazla kez tanımlanabilir) genişleterek bu sorunu kalıcı olarak çözebilirsiniz. Yalnızca Realtek nic driver güncellemesini güncellemek için bir örnek:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup 23

find /usr/lib/firmware -atime +3030 gün içinde erişilmeyen ürün yazılımı dosyalarını bulabilir. Bu dosyaları silmek güvenlidir.
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.*

İlk olarak, sistemde büyük olan ne?

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

Bu, / aşağıdaki iki seviyeyi yapabileceğiniz en büyük dizinin sıralanmış bir listesini gösterir :

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

Benim sonucum:

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    /

Ben görmezden /mntİki dirs akla standı (yani harici bir sürücü çünkü): varve usr. Bakalım içinde ne var:

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

O zaman biraz daha derin:

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

Günlükleri ile başlayalım

717 MB'ım var /var/log.

Dizinleri rastgele silme hayranı değilim, o yüzden temiz bir şekilde yapalım:

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

Sadece 100mb'lık günlük bırakalım:

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.

Journalctl'yi burada nasıl yapılandıracağınızla ilgili daha fazla bilgi .

Paketler

Benim var 660M /var/cache/pacman. 1.8 gb, ancak pacman -Sckullanılmayan paketleri kaldırmak için koştum . Gerisini kaldıralım:

pacman -Scc

/ Usr / share / locale

Birçok kullanıcı kaldırır veya en azından temizler. Ama bir problem olabilirim . Ancak ödeme çamaşır suyu (sonraki paragraf).

BleachBit

Otomatik temizleyici . Çok şey silecek, ama bunun için çoğunlukla yerel oldu.

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

Silinecek daha fazla şey arayabilirsin:

bleachbit --list
bleachbit -p thunderbird.*

Oldukça küçük bir Arch Linux 64-bit kurulumunda, çamaşır suyu paketinin toplam kurulu büyüklüğü 209.70 MiB'dir:Total Installed Size: 209.70 MiB
Pro Backup 23

1
İpucu: bunu yaparsanız du -xkd1içinde /dizine, diğer mountpoints iner olmayacaktır.
fdmillion

3

Eeepc'deki Ubuntu'lu 4GB diskte bazı yerel ayarların (/ usr / share / locale) ve Gnome yardım dosyalarının (/ usr / share / gnome / help /) silinmesine yardımcı oldu. Her ikisi de kullanmadığım diller için kuruldu. Yine de, Arch Linux'un tüm bu dosyaları yükleyip yüklemediğinden emin değilim.


evet ... du -hs /usr/share/localeyaklaşık 300 MB ... sadece rm -rfgereksiz dosyaları alabilir miyim ?
Stefan

2
@Stefan wiki.archlinux.org/index.php/Locale düzenleme ise /etc/locale.genve yeniden çalıştırılabilir locale-gen, daha az ön derlenmiş yörelere sahip olmalıdır. Otomatik olarak daha fazla yer açmak istiyorsanız, aur.archlinux.org/packages.php?ID=11975 adresini de deneyebilirsiniz . (Ama desteklenmiyor ve sisteminizi
bozarsa

1
localepurge , gereksiz yerelleştirmeler için boşa harcanan disk alanını kaldırmak için kullanılan bir komut dosyasıdır. Düzenleme /etc/locale.nopurge ilk :) Ben bunu koşucu ettik ve onlarca aylık her çift MB'ye ~ 300 MB ilk defa temizledik. AUR'da mevcut.
tuk0z

0

OTOMATİK kendi çok eski dosyalarına bakarak önerir ve gerekli olup olmadığını görmek ve bunları kaldırmak. Bu iki şeyle yapılabilir. Bir findçok eski dosyaları aramak için bir komut yazma . ve bu çıktının (belki pipoyu) lograte3 aydan eski dosyaları arşivlemek için komut dosyası oluşturmak ve 3 aydan eski dosyaları arşivde silmek ve silmeden önce 1 güne bir posta göndermek için kullanmak. Böylece önemli bir dosyayı kaybetmediğinizden emin olabilirsiniz. Yani nihayetinde yukarıdakileri gerçekleştirmek için aşağıdaki komutlara ihtiyacınız olacak:

find , | , logrotate , mail, crontab

Kaşıkla seni beslemeyeceğim. Bunu daha önce çok başarılı bir şekilde yaptım ve daha sonra hurdaya çıktım çünkü nagiosbir corp sunucusunda bu tür şeyler yapmak için daha fazla ayarlandığı için izlemeye karar verdik . Bence eğer mailkomut sizin için önceden yapılandırılmadıysa, en zorlu geri kalanın dümdüz olması gerektiğini görebilirsiniz. Bütün bunların bash betiği ve bunu cron işine sokması ve her x günde bir çalışması gerekiyor. Bash scriptini öğren, sadece bunun için değil, * nix ile hayatını kolaylaştırmak için de çok faydalı olacak. Bu yüzden en sevdiğiniz internet arama motorunu kullanın ve yukarıdaki komutları ve bas komut dosyasını okuyun. Ve onları birbirine bağlayın ve test edin. Bir kez memnun normal kullanıma koymak. Bunu yapmanın eğlenceli olacağını garanti ederim. Bunu daha önce yapmadıysanız, çok şey öğreneceksiniz.

  • umarım yardımcı olur

1
Tecrübelerime göre çoğu diskin bir çok şeyi işletim sistemi ile ilgili olmadığını, ancak kendi dosyalarımın bir süre toplandığını gördüm, bu yüzden yukarıdakileri önerdim.
bagavadhar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.