如何释放磁盘空间?

use*_*215 208 server

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

我将清空目录 /tmp 并想知道是否还有其他位置需要清理。

DrK*_*obi 233

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

sudo apt-get clean
Run Code Online (Sandbox Code Playgroud)

删除缓存中所有无法下载的包的所有存储档案(因此不再在存储库中或在存储库中有更新版本的包)。

sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

删除旧的内核版本

sudo apt-get remove --purge linux-image-X.X.XX-XX-generic
Run Code Online (Sandbox Code Playgroud)

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

dpkg --get-selections | grep linux-image
Run Code Online (Sandbox Code Playgroud)

来源: Limpiando Ubuntu comandos y programas (actualización)谷歌翻译

  • 我删除了 `dpkg --get-selections | 列出的所有 linux 映像。grep linux-image` 导致我出现启动错误 - ubuntu 从 grub 启动菜单中消失 - [这个答案](http://askubuntu.com/a/318524/154971) 解决了这个问题 - 尽量不要删除最新的映像 (12认同)
  • 好的,这已经被回答了 100 次(并且在这个线程中也是如此),**但是**我觉得被投票 160 次真的很奇怪,因为:`sudo apt-get clean`它会 - 简单地 - [删除打包您在进行安装 + 升级时可能已下载的所有本地包副本。这几乎会清空 /var/cache/apt/archives 目录。](https://askubuntu.com/a/485404/75115) ...所以下次你运行`sudo apt-get update`它**将**重新下载所有内容(已经存在)。只是一个提示!..:) (7认同)
  • 运行“clean”释放了相当多的空间。紧接着,我运行了“autoclean”,我的可用空间减少了 45MB。再次运行“clean”释放了这个额外的空间。 (5认同)

jet*_*jet 193

  • 要查找大文件,我建议使用 `ncdu`,它提供了一种快速查看哪些目录正在使用您的磁盘空间的方法 (6认同)
  • `kDirStat` 被替换为 `baobab` (2认同)

Oli*_*Oli 124

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

这可以清除大量已更换的碎屑(旧内核等)。您可以在 Synaptic 中做类似的事情(加载它并选择状态按钮,然后选择 Auto-removeable 选项)。

  • 虽然上面的命令肯定有用,但它**不会**,如上所述,删除旧内核。这必须手动或使用 Ubuntu Tweak 等其他工具完成。 (5认同)

hwj*_*wjp 20

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

uname -r
Run Code Online (Sandbox Code Playgroud)

检查您当前的版本,然后

dpkg -l linux-image-* linux-headers-*
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get remove linux-image-<XYZ> linux-headers-<XYZ>
Run Code Online (Sandbox Code Playgroud)

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

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


des*_*gua 15

不要忘记清空垃圾箱。

截屏

或者从命令行:

rm -r ~/.local/share/Trash/info/ && rm -r ~/.local/share/Trash/files/  
Run Code Online (Sandbox Code Playgroud)

或者只是trash-empty使用垃圾cli包。


Dre*_*kes 15

卸载你不使用的大包

有些包可能非常大。找到这些的一种方便的方法是使用dpigs. 它不是默认安装的,但可以在debian-goodiesGitHub 项目)中找到

sudo apt-get install debian-goodies
Run Code Online (Sandbox Code Playgroud)

然后:

$ 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
Run Code Online (Sandbox Code Playgroud)

有几个选项:

-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.
Run Code Online (Sandbox Code Playgroud)


小智 13

我真的向您推荐程序 BleachBit,它可以清理 Ubuntu 上的所有内容。使用以下命令安装它:

sudo apt install bleachbit
Run Code Online (Sandbox Code Playgroud)


rub*_*o77 12

自动删除所有旧内核版本

注意:如果您刚刚升级了内核,请在删除旧版本之前重新启动!

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

uname -r
Run Code Online (Sandbox Code Playgroud)

然后作为根:

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

读取该线程是安全的,不要使用此命令删除所需的内核!


Dre*_*kes 10

还要检查大量日志文件:

sudo du -h /var/log
Run Code Online (Sandbox Code Playgroud)

或者正如rubo77推荐中指出的那样,您可以使用 NCurses 磁盘使用工具:

sudo ncdu /var/log
Run Code Online (Sandbox Code Playgroud)


lov*_*nux 8

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

您还可以使用以下命令清空 apt 缓存:

sudo apt-get clean
Run Code Online (Sandbox Code Playgroud)


Run*_*tes 8

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

  • 请注意,该问题特别要求提供服务器工具,这是一个桌面程序(需要 X 显示)。 (3认同)

rub*_*o77 6

清洁脚本

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

  • 清理apt缓存
  • 从卸载的 .deb 包中删除配置文件(如果你不使用--purgeswitch会发生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
Run Code Online (Sandbox Code Playgroud)

改编自71529-ubucleaner.sh

查找大文件夹和包

一些可帮助您查找大型文件夹和包的工具:

sudo apt install ncdu debian-goodies deborphan
sudo ncdu -xr /  # 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
Run Code Online (Sandbox Code Playgroud)

本地清除

使用 localepurge 卸载系统中未使用的语言:

sudo apt install localepurge
Run Code Online (Sandbox Code Playgroud)

删除旧的快照图像

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

更多在这里

漂白剂

满足所有需求的出色图形 GUI 工具:

sudo apt install bleachbit
Run Code Online (Sandbox Code Playgroud)

更多在这里

删除联机帮助页和文档

此外,您可以删除Ubuntu Wiki 中所述的联机帮助页和文档:

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

sudo apt install localepurge
Run Code Online (Sandbox Code Playgroud)

在 project-config 的 postinst 中删除相同的一组文件和目录。例子:

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


sla*_*ack 5

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


然后,有一个删除双文件的程序。该程序称为fslint. 输入安装即可

sudo apt-get install fslint
Run Code Online (Sandbox Code Playgroud)

在终端中。

或以图形方式

通过软件中心安装 fslint


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

sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

第四步是删除旧的内核条目。您可以通过安装并打开 Synaptic 来完成此操作。在 Synaptic 中,搜索旧的内核条目(GRUB 中显示的每个内核条目(最新的除外))并将其删除。


一个好的步骤是删除应用程序缓存。通过安装并运行来做到这一点bleachbit

sudo apt-get install bleachbit
Run Code Online (Sandbox Code Playgroud)

或以图形方式

通过软件中心安装bleachbit

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


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

cd $HOME
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
./configure
make
Run Code Online (Sandbox Code Playgroud)

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

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

sudo apt-get install git-core 
Run Code Online (Sandbox Code Playgroud)

或使用软件中心通过软件中心安装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
Run Code Online (Sandbox Code Playgroud)

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


来源(德语):这里