如何释放磁盘空间?


181

我的Ubuntu云服务器只剩下900MB磁盘空间。

我只清空目录/ tmp,想知道是否还有其他需要清除的位置。


1
也尝试以下方法:dpkg -l | grep ^ rc | 切-d''-f3 | xargs sudo apt-get purge -y
crsuarezf

如果您正在使用泊坞窗:docs.docker.com/config/pruning
杰拉德卡博

在许多情况下:sudo docker container prune -f && sudo docker image prune -f
smftr

Answers:


104
sudo apt-get autoremove

这样可以清除掉许多已替换的东西(旧内核等)。您可以在Synaptic中执行类似的操作(将其加载并选择状态按钮,然后选择“自动删除”选项)。


它是否不会影响正在运行的应用程序,例如是否删除了任何应用程序所依赖的必需软件包?
user3215

1
不可以。Autoremove会查找孤立的软件包,也就是说,您没有明确安装自己的软件包(标记为auto的软件包)并且没有依赖性。如果使用aptitude而不是apt-get,它可以随时清除,但是在较旧的安装中,随着安全更新的发布,通常会收集大量已安装的内核。
奥利(Oli)

1
我最近的评论中有错字。我的意思是说孤立的软件包是不依赖的软件包,而不是“没有依赖”的软件包。它们很可能具有依赖关系,如果它们仅在那个孤立的程序包中存在,它们也将被删除。有时(使用非常深的依赖树)可能需要几个自动删除才能清除。
奥利(Oli)

5
尽管上面的命令肯定有用,但是如上所述,它不会删除旧内核。这必须手动完成,或使用其他工具(如Ubuntu Tweak)完成。
13年

1
@nyarlathotep它删除内核头文件,乍一看可能使人认为它移除旧的内核-老内核依然存在,但是(试行dpkg --get-selections | grep linux-image)。
drevicko

211

删除已安装(不再需要)的下载软件包(.deb)

sudo apt-get clean

为无法再下载的软件包删除缓存中所有已存储的归档文件(因此不再存在于存储库中或存储库中具有较新版本的软件包)。

sudo apt-get autoclean

删除不必要的软件包(卸载应用程序后,可能有不再需要的软件包)

sudo apt-get autoremove

删除旧的内核版本

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

如果您不知道要删除哪个内核版本

dpkg --get-selections | grep linux-image

资料来源: Ubuntu的Limpiando comandos y programas(actualización)google翻译


1
跑步clean释放了不少空间。之后,我立即运行autoclean,我的可用空间减少了45MB。clean再次运行释放了此额外空间。
Drew Noakes 2013年

8
我删除了所有上市的Linux映像dpkg --get-selections | grep linux-image这引起了我的引导错误-在Ubuntu从grub启动菜单中消失了- 这个答案解决了这一问题-尽量不要删除最新的图像
laplasz

删除Linux映像时,我们到底在做什么?
Menelaos Bakopoulos 2014年

4
好的,这已经被回答了100次(在该线程中也有&),但是我被投票160次真是很奇怪,因为: sudo apt-get clean 它会-简单地- 删除所有可能在本地的软件包副本安装和升级时下载。这将几乎清空/ var / cache / apt / archives目录。 ...因此,下次运行时sudo apt-get update它将重新下载所有内容(已经存在)。单挑!.. :)
Nostromov

168
  • 显示当前目录中的前10个最大子目录。

    du -sk * | sort -nr | head -10
    
  • 使用filelight或kDirStat直观地查看磁盘空间的位置

  • 检查是否有要删除的旧内核

    ls -lh /boot
    
  • 清洁包

    sudo apt-get autoremove
    sudo apt-get autoclean
    

    请参阅所有已安装软件包的列表,按大小排序。如果看到大物件而不使用它-请将其卸载

    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    
  • 使用翻译清理未使用的语言文件(其中有很多)

    sudo apt-get install localepurge
    
  • 检查/ var / tmp /的内容

    du -sh /var/tmp/
    
  • 还检查

    man deborphan
    
  • 搜索大文件:

    find / -type f -size +1024k
    

    要么

    find / -size +50000  -exec ls -lahg {} \;
    
  • 大安装包

    dpigs
    

这是包装的一部分:debian-goodies


4
我建议查找大文件ncdu,这提供了一种快速的方法来查看正在使用您的磁盘空间的目录
rubo77'1

1
kDirStat替换为baobab
rubo77

17

我只是通过删除旧的内核和头文件释放了将近2个演出:

采用

uname -r

检查您的当前版本,然后

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

查看所有旧的内核和头文件,然后

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

apt-get remove命令支持通配符,因此您可以执行apt-get remove linux-image 3.0.* linux-headers-3.0.*例如一次删除多个通配符的操作。

当然,请确保不要杀死删除当前内核!也许保留一个或两个旧版本,以防万一……但不要保留10或20个旧版本!


关于通配符?在使用它之前,我会仔细检查一下,因为我尝试了一下,并且得到了比我想要的更多的东西。我有可能(也许甚至有可能)以某种方式进行填充,但是我不知道该怎么做,但是我丢失了比我想要的更多的头文件。
glaucon,2016年

通配符是正则表达式通配符,而不是glob。
Chai T. Rex

13

不要忘记清空垃圾箱。

在此处输入图片说明


或从命令行:

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

11

我真的向您推荐程序BleachBit,该程序可在Ubuntu上清除所有内容。

使用以下命令安装它:

sudo apt-get install bleachbit


11

卸载不使用的大软件包

一些软件包可能会很大。查找这些内容的便捷方法是使用dpigs。默认情况下未安装它,但可以在debian-goodiesGitHub project)中找到

sudo apt-get install debian-goodies

然后:

$ 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

有几种选择:

-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

自动删除所有旧的内核版本

注意:如果您刚刚升级了内核,请先重新启动,然后再删除旧版本!

请记住检查您正在使用的内核类型:

uname -r

然后以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')

仔细阅读该线程,以确保不使用此命令删除所需的内核!


8

如果使用UFW,请检查日志文件夹。在我的一台机器上,UFW在几天内生成了8Gb的日志。

您还可以使用以下方法清空apt缓存:

sudo apt-get clean

我可以找到UfW日志文件吗?
好奇的学徒

8

尝试使用BleachBit(位于sourceforge)。这是一个很棒的程序。其基本思想是,它可以快速释放磁盘空间,并消除系统中隐藏的许多垃圾。它可以识别和擦拭大约70个应用程序。还可以使用它“擦除”可用磁盘空间。我认为这是仅适用于Linux的Windows中的CCleaner。


3
请注意,该问题专门询问服务器工具,并且这是一个桌面程序(需要X显示)。
里尔(Ryre)

到目前为止最好的工具!
罗杰


4

首先,有一个列出所有大文件夹和文件的工具。只需在启动器中输入“ Baobab”即可。通过删除文件夹和文件,您不需要更多空间。


然后,有一个用于删除双重文件的程序。该程序称为fslint。通过输入安装

sudo apt-get install fslint

在一个终端。

或以图形方式

通过软件中心安装fslint


您还可以使用以下命令清除软件包缓存

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

第四步是删除旧的内核条目。您可以通过安装并打开Synaptic来实现。在Synaptic中,搜索旧的内核条目(GRUB中显示的所有内核条目(最新的除外))并将其删除。


一项不错的步骤是删除应用程序缓存。通过安装和运行来做到这一点bleachbit

sudo apt-get install bleachbit

或以图形方式

通过软件中心安装bleachbit

重要:无法恢复已删除的缓存!


最后一步是对文件系统进行碎片整理。为此,请执行以下操作:

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

使用这些命令,您可以下载并编译e2fsprogs。(如果您或社区有更好的方法来安装程序,请编辑!)

还要确保git-core已安装。如果没有,请执行:

sudo apt-get install git-core 

或使用软件中心 通过软件中心安装git-core

现在,您可以使用以下命令运行该程序:

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

将/ dev / sda1替换为所需的文件系统或文件夹/文件。请注意,要对设备(例如HDD)进行碎片整理,您需要root特权,但不需要您自己的文件。


资料来源(德语):在这里


哇,删除旧的linux-header和linux-image版本可以在我的10.04安装上释放大约一个半小时。fslint也是一个很好的发现。谢谢。
braddock

除了baobab之外,您还可以使用命令行工具ncdu查找大文件夹和文件:sudo apt-get install ncdu
rubo77

4

清洁脚本

此脚本将在控制台上执行最大的块:

  • 清理apt缓存
  • 删除卸载的.deb软件包中剩下的配置文件(如果您不将--purge开关与一起使用,则会发生这种情况apt-get
  • 除去除您使用的内核以外的所有内核
  • 清空每个用户(包括root)的垃圾

创建具有此内容的文件并赋予其可执行权限:

#!/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

改编自71529-ubucleaner.sh


查找大文件夹和文件包

一些可以帮助您找到大文件夹和程序包的工具:

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卸载系统中未使用的语言:

sudo apt-get install localepurge

删除旧的快照图像

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

漂白

一款出色的图形GUI工具,可满足所有需求:

sudo apt-get install bleachbit

删除手册页和文档

此外,您可以按照Ubuntu Wiki中的说明删除手册页和文档:

创建一个文件/etc/dpkg/dpkg.cfg.d/01_nodoc,该文件指定所需的过滤器。例:

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/*

在项目配置的postinst中删除相同的文件和目录集。例:

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/*

根据您的情况,您可以在此脚本中找到更多选项:github.com/box-cutter/debian-vm/blob/master/script/minimize.sh
rubo77

我收到执行该脚本的警告,即将删除与我运行的版本号相同的内核。
Christophe De Troyer

检查您正在使用的当前内核uname -a。如果您之前刚刚执行过apt-get ugrade并获得了新内核,这可能是原因,您正在使用的当前内核不是已安装的最新内核?做一个repoot然后启动该脚本之前
rubo77


3

除非绝对必要,否则永远不要手动清理“ / tmp”目录(即:一个封闭的应用程序在其自身之后没有被清理)。

您可以使用“ du”命令搜索可能会填满空间的位置;通常,名胜古迹位于“ / var”内部。列举两个通常的可疑对象“ / var / log”和“ / var / cache”。尽管我有一些用户安装了备份实用程序,却从未意识到它会在'/ var / backup'中创建GB的增量备份,这些增量备份会在一周或一个月内建立起来以填满整个磁盘空间。


谢谢!。如您所说,我在/ var / cache下的MB中占据了一些空间,想知道如何删除不必要的文件。
user3215



0

当我需要在服务器上腾出更多可用空间时,请使用此命令。它发现所有大于50 MB的文件,“ du -h”使文件列表更好,而“ pipe -make”列表按文件大小进行数字排序后则“ sort -n”。

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

1
您最好ncdu /改用灰尘
rubo77

1
给定du -h,也使用sort -h
muru 2015年

-3
uname -r 

(看你的)

apt-get remove linux-image 3.0.* 

(您的旧版本)。它给了我600mb的自由空间。


3
不赞成使用此命令,是因为如果您不小心使用此类命令,则可以删除最新的内核(甚至所有内核)。
ndemou,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.