Como libero espaço em disco?


181

Meu servidor em nuvem Ubuntu deixou apenas 900 MB de espaço em disco.

Vou apenas esvaziar o diretório / tmp e me perguntar se há algum outro local para limpar.


1
Experimente também este: dpkg -l | grep ^ rc | cut -d '' -f3 | xargs sudo apt-get purge -y
crsuarezf 13/11/2015

Se você estiver usando o docker: docs.docker.com/config/pruning
Gerard Carbó

para muitos casos:sudo docker container prune -f && sudo docker image prune -f
smftr 25/06

Respostas:


104
sudo apt-get autoremove

Isso pode limpar muitos gafes (kernels antigos, etc.) que foram substituídos. Você pode fazer algo semelhante no Synaptic (carregue-o e selecione o botão de status e depois a opção Removível automaticamente).


isso não afetará os aplicativos em execução, como se ele remove qualquer pacote necessário do qual qualquer aplicativo dependa ?.
user3215

1
Não. O Autoremove procura por pacotes órfãos, ou seja, pacotes que você não se instalou explicitamente (aqueles marcados como automático) e que não têm dependências. Se você usar em aptitudevez de apt-get, ele pode limpar à medida que avança, mas é bastante comum que instalações mais antigas coletem uma série de kernels instalados à medida que as atualizações de segurança são lançadas.
Oli

1
Erro de digitação no meu último comentário. Eu quis dizer que pacotes órfãos são aqueles que não são dependentes, não aqueles que "não têm dependências". Eles podem muito bem ter dependências e se eles estavam lá apenas para esse pacote órfão, eles também serão removidos. Algumas vezes (com árvores de dependência realmente profundas), pode levar algumas alterações automáticas para limpar.
Oli

5
Embora o comando acima seja certamente útil, ele não removerá, como declarado, os kernels antigos. Isso deve ser feito manualmente ou com ferramentas adicionais, como o Ubuntu Tweak.
codeling 17/08/13

1
@nyarlathotep Ele irá remover arquivos de cabeçalho do kernel, o que à primeira vista pode fazer pensar que está removendo os antigos kernels - os antigos núcleos permanecem, no entanto (tentar dpkg --get-selections | grep linux-image).
Drevicko

211

Para excluir pacotes baixados (.deb) já instalados (e não mais necessários)

sudo apt-get clean

Para remover todos os arquivos armazenados em seu cache para pacotes que não podem mais ser baixados (portanto, pacotes que não estão mais no repositório ou que possuem uma versão mais recente no repositório).

sudo apt-get autoclean

Para remover pacotes desnecessários (Depois de desinstalar um aplicativo, pode haver pacotes que você não precisa mais)

sudo apt-get autoremove

Para excluir versões antigas do kernel

sudo apt-get remove --purge linux-image-X.X.XX-XX-generic

Se você não souber qual versão do kernel remover

dpkg --get-selections | grep linux-image

Fonte: Limpiando Ubuntu: comandos e programas (atualização) ( traduzido pelo Google )


1
A corrida cleanliberou bastante espaço. Imediatamente depois, corri autocleane meu espaço livre caiu 45 MB. A execução cleannovamente liberou esse espaço extra.
de Drew Noakes

8
Tirei toda a imagem linux listados por dpkg --get-selections | grep linux-imageque me causou um erro de inicialização - o ubuntu desapareceu do menu de inicialização grub - esta resposta corrigido o problema - tente não remover a última imagem
laplasz

O que exatamente estamos fazendo quando removemos as imagens linux?
Menelaos Bakopoulos

4
Ok, isso já foi respondido 100 vezes (e também neste tópico), mas acho realmente estranho receber votos 160 vezes, porque: sudo apt-get clean Ele irá simplesmente remover os pacotes de toda a cópia local dos pacotes que você possa ter baixado ao fazer uma instalação + atualização. Isso quase esvaziará o diretório / var / cache / apt / archives. ... Então, da próxima vez que você executá- sudo apt-get updatelo, baixará novamente tudo (já está lá). Apenas um alerta! .. :) #
Nostromov

168
  • mostre os 10 maiores subdiretórios no diretório atual.

    du -sk * | sort -nr | head -10
    
  • use filelight ou kDirStat para ver para onde o espaço em disco está indo visualmente

  • verifique se você possui kernels antigos para exclusão

    ls -lh /boot
    
  • pacotes de limpeza

    sudo apt-get autoremove
    sudo apt-get autoclean
    

    veja a lista de todos os pacotes instalados, classificados por tamanho. Se você vir algo grande e não o usar, desinstale-o

    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    
  • limpe arquivos de idioma não utilizados com traduções (existem muitos)

    sudo apt-get install localepurge
    
  • verifique o conteúdo de / var / tmp /

    du -sh /var/tmp/
    
  • verifique também

    man deborphan
    
  • Procure arquivos grandes:

    find / -type f -size +1024k
    

    ou

    find / -size +50000  -exec ls -lahg {} \;
    
  • grandes pacotes instalados

    dpigs
    

isso faz parte do pacote: debian-goodies


4
Para encontrar arquivos grandes que eu sugiro ncdu, que fornece uma maneira rápida de ver o que os diretórios estão usando o espaço em disco
rubo77

1
kDirStaté substituído porbaobab
rubo77 22/01

17

Acabei de liberar quase 2 shows removendo kernels antigos e arquivos de cabeçalho:

usar

uname -r

para verificar sua versão atual,

dpkg -l linux-image-* linux-headers-*

para ver todos os kernels e arquivos de cabeçalho antigos,

sudo apt-get remove linux-image-<XYZ> linux-headers-<XYZ>

o apt-get removecomando suporta caracteres curinga, para que você possa, apt-get remove linux-image 3.0.* linux-headers-3.0.*por exemplo, livrar-se de muitos de uma vez.

Certifique-se de não matar, remova o kernel atual, é claro! E talvez mantenha uma ou duas versões antigas, apenas por precaução ... mas não 10 ou 20!


Esse pouco sobre curingas? Antes de usá-lo, verifiquei isso porque tentei e consegui mais do que queria. É possível (talvez até provável) que eu tenha estragado de alguma forma, mas não sei como e, no entanto, perdi mais cabeçalhos do que queria.
Glauco

Os curingas são curingas regex em vez de globs.
Chai T. Rex

13

Não se esqueça de esvaziar o lixo.

insira a descrição da imagem aqui


Ou na linha de comando:

rm -r ~/.local/share/Trash/info/ && rm -r ~/.local/share/Trash/files/  

11

Eu realmente recomendo o programa BleachBit, que limpa tudo no Ubuntu.

Instale-o usando o seguinte comando:

sudo apt-get install bleachbit


11

Desinstale pacotes grandes que você não usa

Alguns pacotes podem ser bem grandes. Uma maneira conveniente de encontrá-las é usar dpigs. Não está instalado por padrão, mas pode ser encontrado em debian-goodies( projeto GitHub )

sudo apt-get install debian-goodies

Então:

$ dpigs
419576 texlive-latex-extra-doc
204112 nvidia-319
175463 google-chrome-stable
141058 linux-image-extra-3.11.0-15-generic
113173 libreoffice-core
104822 valgrind
102322 qt4-doc
93337 blender
91105 texlive-pstricks-doc
90517 libboost1.53-dev

Existem algumas opções:

-n, --lines=N
  Display the N largest packages on the system (default 10).
-s, --status=status-file
  Use status-file instead of the default dpkg status file.
-S, --source
  Display the largest source packages of binary packages installed
  on the system.
-H, --human-readable
  Display package sizes in human-readable format (like ls -lh or du -h)
-h, --help
  Display this message.

10

Remova todas as versões antigas do kernel automaticamente

Atenção: Se você acabou de atualizar o kernel, reinicie antes de excluir as versões mais antigas!

Lembre-se de verificar qual kernel você está usando, digite:

uname -r

Então como root:

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

leia esse tópico como seguro para não remover os kernels necessários com este comando!


8

Se você usa o UFW, verifique a pasta de log. Em uma das minhas máquinas, a UFW estava gerando 8 GB de logs em alguns dias.

Você também pode esvaziar o cache do apt com:

sudo apt-get clean

Posso encontrar arquivos de log do UfW?
Aprendiz curioso

8

Tente usar o BleachBit ( localizado em sourceforge ). É um ótimo programa. a idéia básica é que ela libere rapidamente espaço em disco e remova grande parte do lixo oculto no sistema. Existem cerca de 70 aplicativos que ele pode reconhecer e limpar. Há também a capacidade de usá-lo para "limpar" o espaço livre em disco. Eu penso nisso como o CCleaner do Windows apenas para Linux.


3
Observe que a pergunta pede especificamente ferramentas do servidor e este é um programa de desktop (requer exibição do X).
Ryre

Melhor ferramenta até agora!
Roger

8

Verifique também um grande número de arquivos de log:

sudo du -h /var/log

Ou, como o rubo77 aponta em elogios , você pode usar a ferramenta de uso do disco NCurses:

sudo ncdu /var/log

calhar comando que lista o tamanho do arquivo e não "número de arquivos de log"
dogmatic69

ou usesudo ncdu /var/log
rubo77 22/01

@ rubo77, obrigado, é uma ferramenta muito boa!
de Drew Noakes

4

Primeiro, existe uma ferramenta para listar todas as grandes pastas e arquivos. Basta digitar 'Baobab' no iniciador. Ao remover pastas e arquivos, você não precisa de mais espaço.


Depois, existe um programa para remover arquivos duplos. O programa é chamado fslint. Instale-o digitando

sudo apt-get install fslint

em um terminal.

ou graficamente

Instale o fslint através do centro de software


Você também pode limpar o cache do pacote com

sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove

O quarto passo é remover as entradas antigas do Kernel. Você pode fazer isso instalando e abrindo o Synaptic. No Synaptic, procure as entradas antigas do Kernel (todas as entradas do Kernel exibidas no GRUB, exceto as mais recentes) e remova-as.


Um bom passo é remover o cache do aplicativo. Faça isso instalando e executando bleachbit:

sudo apt-get install bleachbit

ou graficamente

Instale o bleachbit através do centro de software

Importante: O cache excluído não pode ser restaurado!


O último passo é desfragmentar o sistema de arquivos. Faça o seguinte para isso:

cd $HOME
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
./configure
make

Com esses comandos, você baixa e compila o e2fsprogs. (Se você ou a comunidade tiver uma maneira melhor de instalar o programa, edite-o!)

Verifique também se git-coreestá instalado. Caso contrário, execute:

sudo apt-get install git-core 

ou usando o Software Center Instale o git-core através do centro de software

Agora você pode executar o programa com:

cd $HOME/e2fsprogs/misc
./e4defrag /dev/sda1    #defragment /dev/sda1
./e4defrag -v /dev/sda1 # verbose output
./e4defrag -c /dev/sda1 # see overview of fragmentation status

Substitua / dev / sda1 pelo sistema de arquivos ou pasta / arquivo que você deseja. Observe que, para desfragmentar um dispositivo (como HDD), você precisa de privilégios de root, mas não para seus próprios arquivos.


Fonte (alemão): aqui


Uau, a exclusão de versões antigas de cabeçalho e imagem de linux liberou cerca de um show e meio na minha instalação 10.04. O fslint também é um ótimo achado. Obrigado.
22412

Em vez de baobá você também pode usar o ncdu ferramenta de linha de comando para encontrar grandes pastas e arquivos:sudo apt-get install ncdu
rubo77

4

script mais limpo

Este script executará os maiores pedaços no console:

  • Cache apt limpo
  • Remova os arquivos de configuração restantes dos pacotes .deb desinstalados (acontece se você não usar o --purgeswitch apt-get)
  • Remova todos os kernel, exceto o que você está usando
  • Esvazie as lixeira de todos os usuários (incluindo raiz)

crie um arquivo com este conteúdo e conceda direitos executáveis:

#!/bin/bash
# Adapted from 71529-ubucleaner.sh - http://www.opendesktop.org/CONTENT/content-files/71529-ubucleaner.sh

OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
CURKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')
LINUXPKG="linux-(image|headers|ubuntu-modules|restricted-modules)"
METALINUXPKG="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"
OLDKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $LINUXPKG |grep -vE $METALINUXPKG|grep -v $CURKERNEL)
YELLOW="\033[1;33m"; RED="\033[0;31m"; ENDCOLOR="\033[0m"

if [ $USER != root ]; then
  echo -e $RED"Error: must be root! Exiting..."$ENDCOLOR
  exit 0
fi

echo -e $YELLOW"Cleaning apt ..."$ENDCOLOR
aptitude clean
apt-get autoremove
apt-get autoclean

echo -e $YELLOW"Those packages were uninstalled without --purge:"$ENDCOLOR
echo $OLDCONF
#apt-get purge "$OLDCONF"  # fixes the error in the original script
for PKGNAME in $OLDCONF ; do  # a better way to handle errors
  echo -e $YELLOW"Purge package $PKGNAME"
  apt-cache show "$PKGNAME"|grep Description: -A3
  apt-get -y purge "$PKGNAME"
done

echo -e $YELLOW"Removing old kernels..."$ENDCOLOR
echo current kernel you are using:
uname -a
aptitude purge $OLDKERNELS

echo -e $YELLOW"Emptying every trashes..."$ENDCOLOR
rm -rf /home/*/.local/share/Trash/*/** &> /dev/null
rm -rf /root/.local/share/Trash/*/** &> /dev/null

echo -e $YELLOW"Script Finished!"$ENDCOLOR

Adaptado de 71529-ubucleaner.sh


encontre grandes pastas e pacotes

Algumas ferramentas que ajudarão você a encontrar grandes pastas e pacotes:

sudo apt-get install ncdu debian-goodies deborphan

sudo ncdu /    # lists all folders by size on the console (like the gui `baobab`)
dpigs -H       # shows large packages that you don't use
man deborphan  # finds packages that have no packages depending on them
deborphan --guess-all --libdevel | xargs apt-get -s purge

localepurge

Use o localepurge para desinstalar idiomas não utilizados no seu sistema:

sudo apt-get install localepurge

remover imagens snapd antigas

LANG=c snap list --all | awk '/disabled/{print $1, $3}' | \
    while read snapname revision; do \
        snap remove "$snapname" --revision="$revision"; \
    done

bleachbit

Uma ótima ferramenta gráfica de GUI para atender todas as necessidades:

sudo apt-get install bleachbit

remover páginas de manual e documentação

Além disso, você pode remover as páginas de manual e a documentação, conforme descrito no Ubuntu Wiki :

Crie um arquivo /etc/dpkg/dpkg.cfg.d/01_nodoc que especifique os filtros desejados. Exemplo:

path-exclude /usr/share/doc/*
# if we need to keep copyright files for legal reasons:
# path-include /usr/share/doc/*/copyright
path-exclude /usr/share/man/*
path-exclude /usr/share/groff/*
path-exclude /usr/share/info/*
# lintian stuff is small, but really unnecessary
path-exclude /usr/share/lintian/*
path-exclude /usr/share/linda/*

Remova o mesmo conjunto de arquivos e diretórios no postinst do projeto-configuração. Exemplo:

echo "Removing documentation..."
# if we need to keep copyright files for legal reasons:
# find /usr/share/doc -depth -type f ! -name copyright | xargs rm || true
# else:
find /usr/share/doc -depth -type f | xargs rm || true
rm -rf /usr/share/man/* /usr/share/groff/* /usr/share/info/* /usr/share/lintian/* /usr/share/linda/* /var/cache/man/*

Dependendo do seu caso, você pode encontrar mais algumas opções neste script: github.com/box-cutter/debian-vm/blob/master/script/minimize.sh
rubo77

Recebi um aviso ao executar este script que estava prestes a remover um kernel com o mesmo número de versão em execução.
Christophe De Troyer

verifique o kernel atual com o qual você está usando uname -a. Caso você tenha feito um apt-get ugrade antes e adquirido um novo kernel, isso pode ser a causa, porque o kurnel atual que você está usando não é o mais novo que está instalado? Fazer um repoot em seguida, antes de iniciar este script
rubo77


3

O diretório '/ tmp' nunca deve ser limpo manualmente, a menos que seja absolutamente necessário (ou seja: um aplicativo fechado não foi limpo depois de si mesmo).

Você pode pesquisar onde o espaço pode estar sendo preenchido usando o comando 'du'; geralmente locais de interesse estão dentro de '/ var'. Para nomear dois suspeitos comuns '/ var / log' e '/ var / cache'. Embora eu tenha tido alguns usuários que instalam um utilitário de backup e nunca percebem que ele cria GBs de backups incrementais em '/ var / backup', acumulados durante uma semana ou mês para preencher todo o espaço em disco.


Obrigado!. Como você disse, tenho algum espaço ocupado em MBs em / var / cache e gostaria de saber como remover arquivos desnecessários.
user3215


1

Se você já excluiu muito lixo, mas o espaço em disco não parece limpo, basta reiniciar o ubuntu. Ou, se você não quiser reiniciar, basta executar o comando como em uma pergunta semelhante .

sudo service rsyslog restart

0

Quando preciso liberar mais espaço nos servidores, uso este comando. Ele encontra todos os arquivos maiores que 50 MB e "du -h" cria uma lista melhor de arquivos e "sort -n" após o pipe torna a lista classificada numericamente por tamanho de arquivo.

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

1
Você seria melhor fora de poeira usando ncdu /vez
rubo77

1
Dado du -h, use sort -htambém.
muru

-3
uname -r 

(para ver o seu)

apt-get remove linux-image 3.0.* 

(suas versões mais antigas). Isso me deu 600 MB de espaço livre.


3
Voto negativo porque com comandos como este, se você não tomar cuidado, poderá remover o kernel mais recente (ou mesmo todos os kernels).
Ndemou
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.