Como minimizo o uso do espaço em disco

29

Uma das minhas máquinas é o EeePC Surf de 2 GB , um netbook limpo com recursos muito limitados. Tão limitado que, no momento, tenho 22 MB de espaço livre restante.

Nele, estou executando o Arch Linux com o Openbox DE e uma série de aplicativos necessários para que ele funcione como um PC móvel.

Quais métodos estão disponíveis para eliminar algum espaço usado desnecessário?

Stefan
fonte
@Stefan quanta RAM ele tem? (apenas querendo saber se é viável para colocar as coisas como / tmp na ram)
xenoterracide
1
@Stefan também ... se você está disposto a ir a rota experimental ... btrfs supostamente suporta um sistema de arquivo compactado (? Ou vai) talvez verificar isso
xenoterracide
@stefan também du -sh /para ver onde a maior parte do seu espaço está sendo usada.
Xenoterracide
@xeno, 490MB de RAM, e é du -sh /*?
Stefan
@Stefan por isso é ... oops ... de que você pode cd /e correr du -sh *e detalhamento ... (você realmente não tem memória RAM suficiente para o material loja nele)
xenoterracide

Respostas:

19

Aqui estão alguns pontos que você pode começar:

  • Dê uma olhada nos pacotes instalados no seu sistema pacman -Qe remova os que você não precisa. Um bom começo pode ser anexar a -t opção:

    Restrinja ou filtre a saída para pacotes não exigidos por nenhum pacote atualmente instalado.

  • Limpe o cache do pacote pacman com pacman -Sc

  • Sempre use pacman -Rspara remover também dependências de pacotes não utilizadas.

  • Para encontrar "arquivos grandes" e pastas que usam grandes partes do disco, uma boa adição ao dué xdiskusage. Esta pequena ferramenta permite que você navegue rapidamente em seu sistema de arquivos e veja a representação gráfica do uso do disco nas pastas.

echox
fonte
pacman -ccpara limpar todo o cache, incluindo pacotes instalados, eu acho. Normalmente não é recomendado, pois você pode querer backups mais tarde.
Xenoterracide
@ xeno, eu já montei um diretório na minha área de trabalho --cachedir, então não preciso manter nenhum arquivo pkg.
Stefan
3
Para liberar espaço /, achei pacgraphrealmente útil. Ele pode classificar os pacotes instalados por tamanho, para que você possa priorizar melhor o que faz sentido remover. (Ela pode até mesmo desenhar gráficos de dependência SVG, mas é útil a partir de apenas a linha de comando.)
Anko
4
ncdué uma alternativa legal de linha de comando para xdiskusage. O Baobab é de longe o melhor aplicativo gráfico para esse fim.
Zaz
10

AVISO: Essas idéias são apenas para usuários versados ​​no Linux como um todo e no Arch Linux.

Se você estiver disposto a entrar em um território perigoso, poderá reduzir a instalação básica do Arch para menos de 500 MB instalados. Isso requer fazer algumas coisas muito perigosas:

  1. removendo todos os locais desnecessários (já cobertos)
  2. removendo todos os arquivos de firmware não necessários para executar seu sistema (de /usr/lib/firmware)
  3. removendo quaisquer módulos do kernel não necessários para executar seu sistema (de /usr/lib/modules/...)
  4. remover .aarquivos /usr/lib(apenas se você nunca usar o sistema para compilar software. nota: isso inclui o uso demakepkg )
  5. removendo tudo /usr/include(apenas se você nunca usar o sistema para compilar software)
  6. remover documentação desnecessária /usr/share/doce/usr/share/info
  7. (MUITO RUMA IDEIA, a menos que talvez para um servidor) removendo as páginas de manual de /usr/share/man
  8. (também é uma má ideia) remover descritores de terminal /usr/share/terminfodesnecessários e arquivos de fuso horário desnecessários de/usr/share/zoneinfo
  9. (PERIGOSO) strip *em execução em todas as pastas que contêm binários executáveis ​​( /usr/bine /usr/sbin)
  10. (em situações extremas) usando uma ferramenta como upxpara comprimir binários maiores (os binários do Samba se prestam a este bem como eles tendem a ser bastante grande, uma vez que muitas vezes são compilados estaticamente.) Observe também que o uso de upxmeios de todo o binário descompactado deve caber dentro RAM durante a execução, portanto, esteja cansado de sistemas com pouca RAM.

Antes de fazer qualquer coisa, faça um backup completo do seu sistema. Felizmente, o Linux torna isso relativamente fácil - se você pode conectar e montar um volume externo (por exemplo, uma unidade USB), pode fazer algo como cd / && tar -cf /mnt/usb/mySystem.tar /fazer backup de todo o sistema.

Mais uma vez, observe que, na verdade, eu não recomendo fazer o procedimento acima (especialmente 7 a 9), a menos que você tenha conhecimento, experiência e entendimento aprofundados dos internos do Linux e do Arch Linux . Jogar com praticamente qualquer um dos arquivos que listei pode danificar um sistema de maneira horrível, por isso você foi avisado. Se você não sabe se o seu sistema precisa de um determinado arquivo de firmware, módulo, etc., faça sua pesquisa antes de mexer com ele. (Esteja avisado de que a remoção de módulos do kernel de que seu sistema precisa pode resultar em um sistema não inicializável ou em um sistema sem suporte para teclado / placa de rede / som / tela / etc. Ou todo tipo de comportamento inexplicável.)

Observe também que qualquer atualização de pacote pode e irá restaurar muitos dos arquivos removidos acima. Se você decidir seguir esse caminho, poderá eventualmente criar um script para a remoção de arquivos desnecessários e executá-lo após cada atualização principal do pacote. (Exemplo: atualizar o kernel trará de volta todos os módulos do kernel, bem como atualizará via dependência o pacote linux-firmware trazendo de volta todo o firmware /usr/lib/firmware.)

Por fim, fique atento, /var/logpois os arquivos do diário crescerão com o tempo. Você pode remover os diários anteriores, mas manter os atuais fazendo algo como rm *\@*.journalna pasta do diário.

Executei com êxito um servidor NAS de um dispositivo Disk-on-Module de 512MB por meses usando essas técnicas, mas elas ainda não são para os fracos de coração. (Eu também usei o LinuxFromScratch para criar um projeto semelhante em apenas 128 MB de armazenamento, mas isso é outra história ...)


EDITAR / ADICIONAR:

Aqui estão mais alguns métodos que você pode usar para tentar obter algum espaço extra:

  • Livrar-se de libgo. A libgobiblioteca é fornecida com o gcc-libsAFAIK e é usada apenas por aplicativos escritos no idioma Go. Não consigo pensar em nenhum aplicativo que precise dessa biblioteca. No meu sistema, ele tem 40 MB de tamanho. Quando você está tentando emagrecer, há muito espaço. Eu o removi das minhas "mini" instalações sem causar efeitos negativos em tudo o que faço (mas, novamente, sou eu, YMMV!)

  • Encolhendo libicudata.so. São 27 MB no meu sistema. É basicamente uma tonelada de dados unicode / locale compactados em um objeto de biblioteca. Existe uma ferramenta on-line que pode criar versões menores deste arquivo, mas não foi atualizada para a versão atual (e você não pode usar arquivos mais antigos em versões mais recentes.) Não tentei fazer isso manualmente, mas se você puder descobrir como, pode economizar cerca de 20 a 22 MB desse arquivo.

  • Se você usar o Python, você pode salvar 37MB ou assim, removendo a testbiblioteca de python2: rm -r /usr/lib/python2.7/teste cerca de 66MB por removê-lo para python3: rm -r /usr/lib/python3.6/test.

  • Novamente para Python, você pode se livrar dos .pyoarquivos e dos .pyarquivos. Os .pyoarquivos são arquivos "otimizados", mas o Python nunca os utiliza realmente. Os .pyarquivos são o código-fonte bruto da biblioteca padrão. Os únicos arquivos que o Python normalmente lê ao executar o código Python são os .pycarquivos (compilados pelo python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;ecd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Removendo dados de localidade desnecessários. Existe um pacote AUR chamado localepurgeque automatiza isso. Caso contrário, você tem que brincar /usr/share/locale. Você precisa manter seu próprio local e locale.alias. Para mim aqui nos EUA, mantendo en_USe locale.aliase remover tudo o resto raspado sobre 80MB.

Agora, o que eu quero ver é uma ferramenta que analisa seu sistema e determina quais módulos do kernel você precisa e também quais arquivos de firmware você precisa. Essa seria uma boa maneira de limpar "com segurança" essas pastas ...

Ou talvez alguém deva montar uma "distro" do Arch que use uClibcou diet-libcou algo semelhante. Esse pode ser um projeto divertido de verão. :-)

fdmillion
fonte
2
Também estou interessado em fazer isso .. o firmware parece ser o maior ganho para mim, estou tentando fazer uma pequena caixa de vagabundos, portanto, só preciso do firmware necessário para executar o arch no virtualbox ... existe uma maneira fácil de encontrar qual firmware é necessário?
Tom B
aviso: apenas tentei upx, ele não joga bem com todos os tipos de exectuables, ex: ele deixou mysqld & mongodb segfaulting
Ayush
3
re: as atualizações de pacotes podem e restauram muitos dos arquivos que você remove . Estendendo o arquivo /etc/pacman.conf com NoExtractdefinições (pode ser definido várias vezes), você pode resolver esse problema permanentemente. Um exemplo para atualizar apenas os drivers de atualização Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup
find /usr/lib/firmware -atime +30encontraria arquivos de firmware que não são acessados ​​em 30 dias. Deve ser seguro excluir esses arquivos.
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.*

Primeiro, o que é grande no sistema

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

Isso mostra uma lista classificada dos maiores diretórios em / Você pode fazer dois níveis abaixo:

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

Meu resultado é:

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    /

Eu ignoro /mnt(porque essa é uma unidade externa) Dois dirs lembram: vare usr. Vamos ver o que há dentro:

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

Então, um pouco mais fundo:

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

Vamos começar com os logs

Eu tenho 717mb /var/log.

Eu não sou fã de excluir diretórios aleatoriamente, então vamos fazer da maneira limpa:

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

Vamos deixar apenas 100mb de logs:

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.

Mais informações aqui sobre como configurar o journalctl aqui .

Pacotes

Eu tenho 660M /var/cache/pacman. Tinha 1,8 GB, mas corri pacman -Scpara remover pacotes não utilizados. Vamos remover o resto:

pacman -Scc

/ usr / share / locale

Muitos usuários o removem ou pelo menos limpam. Mas eu posso ser um problema . Mas confira o bleachbit (próximo parágrafo).

Bleachbit

Limpador automático . Excluirá muitas coisas, mas, na maioria das vezes, eram locais.

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

Você pode procurar mais coisas para excluir:

bleachbit --list
bleachbit -p thunderbird.*
névoa
fonte
Em uma instalação mínima do Arch Linux de 64 bits, o tamanho total instalado do pacote bleachbit é 209,70 MiB:Total Installed Size: 209.70 MiB
Pro Backup
1
Dica: se você fizer isso du -xkd1no /diretório, ele não descerá para outros pontos de montagem.
Fdmillion 9/04
3

No disco de 4 GB no meu Eeepc com Ubuntu, ele ajudou a remover alguns arquivos de localidade (de / usr / share / locale) e arquivos de ajuda do Gnome (de / usr / share / gnome / help /). Ambos foram instalados para idiomas que não uso. Porém, não tenho certeza se o Arch Linux instala todos esses arquivos.


fonte
sim ... du -hs /usr/share/localetem cerca de 300MB ... posso apenas rm -rfos arquivos desnecessários?
Stefan
2
@Stefan wiki.archlinux.org/index.php/Locale Se você editar /etc/locale.gene executar novamente locale-gen, deverá ter menos localizações pré-compiladas. Se você deseja liberar mais espaço de forma automatizada, também pode tentar aur.archlinux.org/packages.php?ID=11975 . (Mas é sem suporte e se ele quebra o seu sistema, você começa a manter as peças.)
ephemient
1
localepurge é um script para remover o espaço em disco desperdiçado em localizações desnecessárias. Edite o /etc/locale.nopurge primeiro :) Limpou ~ 300 MB na primeira vez que o executei e dezenas de MB a cada dois meses. Está disponível no AUR.
28615 tuk0z
0

Eu sugiro AUTOMATIZAR olhando seus próprios arquivos muito antigos e ver se é necessário e removê-los. Isso pode ser feito com duas coisas. Um escrevendo um findcomando para procurar arquivos muito antigos. e usando essa saída (talvez canal) para criar logratescripts para arquivar arquivos com mais de 3 meses e excluir arquivos com mais de 3 meses no arquivo e enviar um email para 1 dia antes de excluí-lo. Para ter certeza de que não perdeu nenhum arquivo importante. Então, finalmente, você precisaria dos seguintes comandos para realizar o acima:

find , | , logrotate , mail, crontab

Eu não vou dar de colher para você. Eu fiz isso antes, foi bastante bem-sucedido com isso e depois foi descartado porque decidimos continuar com o nagiosmonitoramento, pois estava mais otimizado para fazer esse tipo de coisa em um servidor corporativo. Acho que se o mailcomando ainda não estiver configurado para você, você pode achar que o descanso mais difícil deve ser direto. Tudo isso precisa ser feito através do script bash, colocando-o no job cron e executando a cada x dias. Aprenda o script bash, será muito útil não apenas para isso, mas para tornar sua vida mais fácil com o * nix. Portanto, use seu mecanismo de pesquisa favorito na Internet e leia sobre os comandos acima e o script bash. E amarre-os e teste-o. Uma vez satisfeito, coloque em uso regular. Eu garanto que será divertido fazer isso. Você aprenderá muito se não tiver feito isso antes.

  • espero que ajude
Bagavadhar
fonte
1
Pela minha experiência, descobri que a maioria das coisas que ocupam discos não são arquivos relacionados ao SO, mas meus próprios arquivos foram acumulados durante um período de tempo, portanto sugeri o exposto acima.
Julio