ti-enxame.com

Como minimizo o uso do espaço em disco

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

Nele, estou executando o Arch Linux com o Openbox DE e um host 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?

30
Stefan

Aqui estão alguns pontos com os quais você pode começar:

  • Veja os pacotes instalados no seu sistema com pacman -Q e remova os que você não precisa. Um bom começo pode ser anexar o -t interruptor:

    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 -Rs para 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 a 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.

19
echox

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. remover todos os arquivos de firmware não necessários para executar o sistema (de /usr/lib/firmware)
  3. remover todos os módulos do kernel não necessários para executar seu sistema (de /usr/lib/modules/...)
  4. removendo qualquer .a arquivos em /usr/lib (apenas se você nunca usar o sistema para compilar software. nota: isso inclui o uso de makepkg)
  5. removendo tudo em /usr/include (somente se você nunca usar o sistema para compilar software)
  6. removendo documentação desnecessária de /usr/share/doc e /usr/share/info
  7. (MUITO RUIM IDEA a menos que seja para um servidor) removendo as páginas de manual de /usr/share/man
  8. (também é uma má ideia) remover os descritores de terminal desnecessários de /usr/share/terminfo e arquivos de fuso horário desnecessários de /usr/share/zoneinfo
  9. (PERIGOSO) executando strip * em todas as pastas que contêm binários executáveis ​​(/usr/bin e /usr/sbin)
  10. (em situações extremas) usando uma ferramenta como upx para compactar binários maiores (os binários do Samba se prestam a isso também, pois tendem a ser muito grandes, pois geralmente são compilados estaticamente). Observe também que o uso de upx significa que todo o binário não compactado deve caber em RAM durante a execução, portanto, esteja cansado de sistemas com pouca memória 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 / para 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 profundo, experiência e entendimento 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 grande atualização do pacote. (Exemplo: a atualização do kernel trará de volta todos os módulos do kernel, bem como a atualização via dependência do pacote linux-firmware, trazendo de volta todo o firmware em /usr/lib/firmware.)

Por fim, fique de olho em /var/log como 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 *\@*.journal na sua pasta do diário.

Executei com êxito um servidor NAS de um dispositivo Disk-on-Module de 512 MB por meses usando essas técnicas, no entanto, elas ainda não são para os fracos de coração. (Eu também usei 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 biblioteca libgo vem com gcc-libs e o AFAIK é usado apenas por aplicativos escritos no idioma Go. Não consigo pensar em nenhum aplicativo que precise dessa biblioteca. No meu sistema, 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 desse 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ê usa o Python, pode economizar 37 MB, removendo a biblioteca test do python2: rm -r /usr/lib/python2.7/test e cerca de 66MB removendo-o para python3: rm -r /usr/lib/python3.6/test.

  • Novamente para Python, você pode se livrar do .pyo arquivos e os .py arquivos. O .pyo arquivos são arquivos "otimizados", mas Python nunca os utiliza realmente. O .py arquivos são o código-fonte bruto da biblioteca padrão. Os únicos arquivos Python normalmente lê quando executando Python é o .pyc (arquivos compilados em python). cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \; e cd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;

  • Removendo dados de localidade desnecessários. Existe um pacote AUR chamado localepurge que automatiza isso. Caso contrário, você tem que brincar em /usr/share/locale. Você precisa manter seu próprio código de idioma e locale.alias. Para mim aqui nos EUA, mantendo en_US e locale.alias e remover todo o resto reduziu cerca de 80 MB.

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 ótima maneira de limpar "com segurança" essas pastas ...

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

11
fdmillion

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-se: var e 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 em /var/log.

Eu não sou fã de excluir diretórios aleatoriamente, então vamos fazê-lo 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 eu corri pacman -Sc para 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.*
5
mist

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.

3
oliver

Eu sugeriria 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 comando find para procurar arquivos muito antigos. e usando essa saída (talvez canal) para o script lograte 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 muito bem-sucedido com isso e depois foi descartado porque decidimos usar nagios para monitoramento, pois estava mais otimizado para fazer esse tipo de coisa em um servidor corporativo. Acho que se o comando mail ainda não estiver configurado para você, você pode achar que o descanso mais difícil deve ser direto. Tudo isso precisa ser feito por meio do script bash, colocando isso no job cron e executando a cada x dias. Aprenda os scripts do 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 busca favorito na Internet e leia sobre os comandos acima e o bash scripting. E amarre-os e teste-o. Uma vez satisfeito, colocar em uso regular. Eu garanto que será divertido fazer isso. Você aprenderá muito se não tiver feito isso antes.

  • Espero que ajude
0
bagavadhar