Come ridurre al minimo l'utilizzo dello spazio su disco


29

Una delle mie macchine è l' EeePC Surf da 2 GB , un netbook pulito con risorse molto limitate. Così limitato che in questo momento, mi rimangono 22 MB di spazio libero.

Su di esso, sto eseguendo Arch Linux con Openbox DE e una serie di applicazioni necessarie affinché funzioni come un PC portatile.

Quali metodi sono disponibili per eliminare un po 'di spazio usato non necessario?


@Stefan quanta RAM ha? (chiedo solo se è possibile mettere cose come / tmp in ram)
xenoterracide

1
@Stefan anche ... se sei disposto a seguire il percorso sperimentale ... btrfs suppone che supporti un file system compresso (o lo farà?) Forse dai un'occhiata
xenoterracide

@stefan anche du -sh /per vedere dove viene utilizzato la maggior parte del tuo spazio.
xenoterracide,

@xeno, 490 MB di RAM, ed è du -sh /*?
Stefan,

@Stefan così è ... oops ... di te puoi cd /e corri du -sh *e vai a fondo ... (non hai davvero abbastanza ariete per immagazzinare roba)
xenoterracide

Risposte:


19

Ecco alcuni punti con cui potresti iniziare:

  • Dai un'occhiata ai pacchetti installati sul tuo sistema con pacman -Qe rimuovi quelli che non ti servono. Un buon inizio potrebbe essere quello di aggiungere l' -t interruttore:

    Limita o filtra l'output ai pacchetti non richiesti da nessun pacchetto attualmente installato.

  • Pulisci la cache dei pacchetti di pacman con pacman -Sc

  • Utilizzare sempre pacman -Rsper rimuovere anche le dipendenze dei pacchetti non utilizzate.

  • Per trovare "file di grandi dimensioni" e cartelle che utilizzano grandi parti del disco, una buona aggiunta a duè xdiskusage. Questo piccolo strumento ti consente di sfogliare rapidamente il tuo filesystem e vedere la rappresentazione grafica dell'utilizzo del disco delle cartelle.


pacman -ccper pulire l'intera cache compresi i pacchetti installati credo. Normalmente non raccomandato in quanto potresti volerlo come backup in seguito.
xenoterracide,

@xeno, ho già installato una directory sul mio desktop --cachedir, quindi non ho bisogno di conservare alcun file pkg.
Stefan,

3
Per liberare spazio /, l'ho trovato pacgraphdavvero utile. Può ordinare i pacchetti installati in base alle dimensioni, in modo da poter stabilire meglio le priorità di ciò che ha senso rimuovere. (Può anche disegnare grafici di dipendenza SVG, ma è utile solo dalla riga di comando.)
Anko

4
ncduè una fantastica alternativa alla riga di comando xdiskusage. Baobab è di gran lunga la migliore app grafica per questo scopo.
Zaz,

10

ATTENZIONE: queste idee sono solo per utenti esperti di Linux nel suo insieme e Arch Linux.

Se sei disposto a calpestare un territorio pericoloso, puoi ridurre un'installazione Arch di base fino a meno di 500 MB installati. Ciò richiede alcune cose molto pericolose:

  1. rimozione di tutte le localizzazioni non necessarie (già coperte)
  2. rimozione di eventuali file del firmware non necessari per eseguire il sistema (da /usr/lib/firmware)
  3. rimuovere eventuali moduli del kernel non necessari per eseguire il sistema (da /usr/lib/modules/...)
  4. rimozione di qualsiasi .afile in /usr/lib(solo se non si utilizza mai il sistema per compilare software. Nota: questo include l'utilizzo makepkg)
  5. rimuovere tutto /usr/include(solo se non si utilizza mai il sistema per compilare software)
  6. rimozione della documentazione non necessaria da /usr/share/doce/usr/share/info
  7. (IDEA MOLTO MALE se non per un server) rimuovendo le pagine man /usr/share/man
  8. (anche una cattiva idea) rimozione di descrittori di terminale non necessari da /usr/share/terminfoe file di fuso orario non necessari da/usr/share/zoneinfo
  9. (PERICOLOSO) in esecuzione strip *su tutte le cartelle contenenti file binari eseguibili ( /usr/bine /usr/sbin)
  10. (in situazioni estreme) usando uno strumento come upxcomprimere binari più grandi (i binari di Samba si prestano bene a questo dato che tendono ad essere abbastanza grandi dato che sono spesso compilati staticamente.) Si noti inoltre che usando upxsignifica che l'intero binario non compresso deve adattarsi RAM durante l'esecuzione, quindi fai attenzione ai sistemi con RAM bassa.

Prima di eseguire QUALSIASI di questo, EFFETTUARE UN BACKUP COMPLETO del sistema. Linux per fortuna lo rende relativamente semplice: se è possibile collegare e montare un volume esterno (ad esempio un'unità USB), è possibile fare qualcosa di simile cd / && tar -cf /mnt/usb/mySystem.tar /per eseguire il backup dell'intero sistema.

Ancora una volta, nota che in realtà non raccomando di fare quanto sopra (specialmente da 7 a 9) a meno che tu non abbia una conoscenza approfondita, esperienza e comprensione degli interni di Linux e Arch Linux . Giocare con quasi tutti i file che ho elencato può danneggiare un sistema in modi orribili, quindi sei stato avvisato. Se non sai se il tuo sistema ha bisogno di un determinato file firmware, modulo, ecc., Fai le tue ricerche prima di sbagliare. (Tieni presente che la rimozione dei moduli del kernel di cui il tuo sistema ha bisogno può comportare un sistema non avviabile o un sistema senza supporto per tastiera / scheda di rete / suono / display / ecc. O qualsiasi altro tipo di comportamento inspiegabile.)

Inoltre, tieni presente che eventuali aggiornamenti dei pacchetti possono e ripristinano molti dei file rimossi sopra. Se decidi di seguire questa strada, potresti eventualmente scriptare la rimozione di file non necessari ed eseguire lo script dopo ogni aggiornamento del pacchetto principale. (Esempio: l'aggiornamento del kernel riporterà tutti i moduli del kernel e aggiornerà tramite dipendenza il pacchetto linux-firmware riportando tutto il firmware /usr/lib/firmware.)

Infine, tieni d'occhio /var/logmentre i file del journal cresceranno nel tempo. Puoi rimuovere le riviste precedenti ma conservare quelle correnti facendo qualcosa di simile rm *\@*.journalnella cartella del tuo diario.

Ho eseguito con successo un server NAS da un dispositivo Disk-on-Module da 512 MB per mesi usando queste tecniche, tuttavia non sono ancora per i deboli di cuore. (Ho anche usato LinuxFromScratch per creare un progetto simile in soli 128 MB di spazio di archiviazione, ma questa è un'altra storia ...)


EDIT / ADD:

Ecco alcuni altri metodi che puoi utilizzare per provare a ottenere dello spazio aggiuntivo:

  • Sbarazzarsi di libgo. La libgolibreria viene fornita con gcc-libsAFAIK ed è utilizzata solo da applicazioni scritte nella lingua Go. Non riesco a pensare a nessuna applicazione che uso che necessita di quella libreria. Sul mio sistema ha una dimensione di 40 MB. Quando stai cercando di dimagrire, c'è molto spazio. L'ho rimosso dalle mie installazioni "mini" senza effetti negativi su tutto ciò che faccio (ma di nuovo, sono io, YMMV!)

  • Restringimento libicudata.so. Sono 27 MB sul mio sistema. È fondamentalmente una tonnellata di dati unicode / locali compressi in un oggetto libreria. Esiste uno strumento online che può creare versioni più piccole di questo file, ma non è stato aggiornato per la versione corrente (e non è possibile utilizzare file più vecchi nelle versioni più recenti). Non ho provato a farlo a mano, ma se riesci a capire come, puoi eliminare circa 20-22 MB da questo file.

  • Se si utilizza Python, è possibile salvare 37MB o giù di lì, eliminando la testlibreria da python2: rm -r /usr/lib/python2.7/teste circa 66MB rimuovendolo per python3: rm -r /usr/lib/python3.6/test.

  • Ancora una volta per Python, puoi sbarazzarti dei .pyofile e dei .pyfile. I .pyofile sono file "ottimizzati", ma Python non li utilizza mai realmente. I .pyfile sono il codice sorgente non elaborato per la libreria standard. Gli unici file che Python legge normalmente quando si esegue il codice Python sono i file .pyc(compilati in Python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;ecd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Rimozione di dati locali non necessari. C'è un pacchetto AUR chiamato localepurgeche automatizza questo. Altrimenti, devi giocare /usr/share/locale. Devi mantenere le tue impostazioni locali e locale.alias. Per me qui negli Stati Uniti, mantenendo en_USe locale.aliase la rimozione di tutto il resto rasati circa 80MB.

Ora, quello che voglio vedere è uno strumento che analizza il tuo sistema e determina quali moduli del kernel sono necessari e anche quali file del firmware sono necessari. Sarebbe un bel modo per ripulire "in modo sicuro" quelle cartelle ...

O forse qualcuno dovrebbe mettere insieme una "distro" Arch che usa uClibco diet-libco qualcosa di simile. Potrebbe essere un divertente progetto estivo. :-)


2
Sono interessato a fare anche questo .. il firmware sembra il più grande guadagno per me, sto cercando di creare una piccola scatola vagabonda, quindi ho solo bisogno del firmware necessario per eseguire arch su virtualbox ... c'è un modo semplice per trovare quale firmware è richiesto?
Tom B,

avvertimento: appena provato upx, non funziona bene con tutti i tipi di exectuables, es: ha lasciato segfaulting mysqld e mongodb
Ayush

3
ri: Gli aggiornamenti dei pacchetti possono e ripristinano molti dei file rimossi . Estendendo /etc/pacman.conf con le NoExtractdefinizioni (che possono essere definite più volte) è possibile risolvere il problema in modo permanente. Un esempio per aggiornare solo i driver Realtek nic di aggiornamento:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup

find /usr/lib/firmware -atime +30trova i file del firmware a cui non si accede entro 30 giorni. Dovrebbe essere sicuro eliminare quei file.
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.*

Innanzitutto, cosa c'è di grande nel sistema

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

Questo mostra un elenco ordinato delle directory più grandi in / Puoi fare due livelli in basso:

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

Il mio risultato è:

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    /

Ignoro /mnt(perché si tratta di un disco esterno) Due dirs in mente: vare usr. Vediamo cosa c'è dentro:

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

Quindi, un po 'più in profondità:

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

Cominciamo con i registri

Ho 717 MB in /var/log.

Non sono un fan dell'eliminazione casuale delle directory, quindi facciamolo in modo pulito:

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

Lasciamo solo 100 MB di log:

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.

Maggiori informazioni qui su come configurare journalctl qui .

Pacchetti

Io ho 660M /var/cache/pacman. Era 1,8 GB, ma ho corso pacman -Scper rimuovere i pacchetti inutilizzati. Rimuoviamo il resto:

pacman -Scc

/ Usr / share / locale

Molti utenti lo rimuovono o almeno lo puliscono. Ma potrei essere un problema . Ma checkout bleachbit (prossimo paragrafo).

BleachBit

Pulitore automatico . Eliminerà molte cose, ma per lo più erano locali.

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

Puoi cercare altre cose da eliminare:

bleachbit --list
bleachbit -p thunderbird.*

In un'installazione Arch Linux a 64 bit abbastanza minimale, la dimensione totale installata del pacchetto bleachbit è 209,70 MiB:Total Installed Size: 209.70 MiB
Backup Pro

1
Suggerimento: se lo fai du -xkd1nella /directory, non scenderà in altri mountpoint.
fdmillion,

3

Sul disco da 4 GB nel mio Eeepc con Ubuntu mi ha aiutato a rimuovere alcuni file delle impostazioni locali (da / usr / share / locale) e i file della guida di Gnome (da / usr / share / gnome / help /). Entrambi sono stati installati per le lingue che non uso. Tuttavia, non sono sicuro che Arch Linux installi tutti quei file.


sì ... du -hs /usr/share/localeè di circa 300 MB ... posso solo rm -rfi file non necessari?
Stefan,

2
@Stefan wiki.archlinux.org/index.php/Locale Se modifichi /etc/locale.gene riesegui locale-gen, dovresti avere meno localizzazioni precompilate. Se vuoi liberare più spazio in modo automatizzato, potresti provare anche aur.archlinux.org/packages.php?ID=11975 . (Ma non è supportato e se si rompe il sistema, si riesce a conservare i pezzi.)
effimero

1
localepurge è uno script per rimuovere lo spazio su disco sprecato per le localizzazioni non necessarie. Modifica prima /etc/locale.nopurge :) Ha ripulito ~ 300 MB la prima volta che l'ho eseguito e dozzine di MB ogni paio di mesi. È disponibile in AUR.
tuk0z,

0

Suggerirei di AUTOMATIZZARE guardando i tuoi file molto vecchi e vedere se è necessario e rimuoverli. Questo può essere fatto con due cose. Uno scrive un findcomando per cercare file molto vecchi. e usando questo output (forse pipe) per eseguire lo logratescript per archiviare i file più vecchi di 3 mesi, eliminare i file più vecchi di 3 mesi in archivio e inviare una mail a 1 giorno prima di eliminarlo. In modo che tu possa essere sicuro di non aver perso alcun file importante. Quindi alla fine avresti bisogno dei seguenti comandi per eseguire quanto sopra:

find , | , logrotate , mail, crontab

Non ho intenzione di nutrirti con il cucchiaio. L'ho già fatto in passato, ma in seguito è stato abbastanza efficace e successivamente è stato eliminato perché abbiamo deciso di continuare il nagiosmonitoraggio perché era più ottimizzato per fare quel tipo di cose in un server corp. Penso che se il mailcomando non è già configurato per te, potresti scoprire che il resto più difficile dovrebbe essere diretto. Tutto ciò deve essere eseguito tramite script bash e inserendolo in cron job ed eseguendolo ogni x giorni. Impara lo script bash, sarà molto utile non solo per questo, ma per semplificarti la vita con * nix. Quindi usa il tuo motore di ricerca Internet preferito e leggi i comandi sopra e lo script bash. E legali insieme e provalo. Una volta soddisfatto mettilo in uso regolarmente. Ti assicuro che sarà divertente farlo. Imparerai molto se non l'hai mai fatto prima.

  • spero che sia d'aiuto

1
Per esperienza ho scoperto che la maggior parte delle cose che occupano il disco non sono file relativi al sistema operativo ma i miei file accumulati per un periodo di tempo, quindi ho suggerito quanto sopra.
Bagavadhar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.