我正在使用 Ubuntu 11.04,我想释放一些超载的根目录中的空间。我特别想更改用于安装应用程序的路径(它们直接安装到根驱动器)。
另一个考虑是我在 MySQL 数据库服务器上工作。服务器本身安装在根目录中,所以我不想冒丢失任何数据的风险。
请给我一些提示来帮助解决这个问题。
hom*_*and 61
我通过删除旧的标题和图像成功清除了 3.5 GB。
请注意,在某些系统上,这也会尝试删除当前的内核,这不是一个好主意 - 请参阅下面的评论以了解如何检查。
我使用了以下命令:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
Run Code Online (Sandbox Code Playgroud)
您可以检查执行命令的第一部分将清除哪些包:
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)
Ame*_*Jah 49
最近我遇到了类似的情况。安装了太多应用程序,它们开始使用我的根安装空间。我列出了我遵循的几个步骤,希望您也可以使用相同的步骤。
清理 apt-get 缓存。以下命令将从 apt-get 缓存目录中删除所有下载的 deb 文件。
运行此命令: sudo apt-get clean
将 /home 挂载点移动到不同的驱动器。以前,我的主文件夹位于根驱动器上。所以我将我的主文件夹移动到单独的驱动器。这帮助我减轻了根挂载带来的压力,因为大多数应用程序将它们的数据存储在 /home/user_name/ 文件夹中。阅读如何将主文件夹移动到单独的驱动器。
增加根分区的大小我知道这是非常明显的答案。但相信我,我们的数据需要随着时间的推移而改变。我认为 20 GB /root mount 就足够了,但一年后我重新调整了 root mount 的大小并增加到 50 GB。
小智 30
使用dpkg-query
发现最大的包,并删除你不再需要的那些(来源):
dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
Run Code Online (Sandbox Code Playgroud)
cma*_*.fr 20
这是我运行的脚本以释放根分区上的空间
function myclean {
## Show free space
df -Th | grep -v fs
# Will need English output for processing
LANG=en_GB.UTF-8
## Clean apt cache
apt-get update
apt-get -f install
apt-get -y autoremove
apt-get clean
## Remove old versions of snap packages
snap list --all | while read snapname ver rev trk pub notes; do
if [[ $notes = *disabled* ]]; then
snap remove "$snapname" --revision="$rev"
fi
done
## Set snap versions retain settings
if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
rm -f /var/lib/snapd/cache/*
## Remove old versions of Linux Kernel
# This one-liner is deprecated since 18.04
# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
# New 2 lines to remove old kernels
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
## Rotate and delete old logs
/etc/cron.daily/logrotate
find /var/log -type f -iname *.gz -delete
journalctl --rotate
journalctl --vacuum-time=1s
## Show free space
df -Th | grep -v fs
}
Run Code Online (Sandbox Code Playgroud)
sha*_*anu 15
sudo apt autoclean # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.
sudo shutdown -rf # it will restart your PC immediately and check filesystem in next boot.
Run Code Online (Sandbox Code Playgroud)
pHe*_*iOn 14
删除旧的内核版本(如homebrand已经建议)可以释放相当数量的空间,如果您还没有这样做的话。
有多种方法可以删除旧内核版本,并且可以在发布到的答案中找到一系列不同的选项:如何删除旧内核版本以清理启动菜单?
我的首选方法主要是来自penreturns 的这个答案,它被分解为相当简单易懂的步骤:
打开终端并检查您当前的内核:
uname -r
不要移除这个内核!
接下来,键入以下命令以查看/列出系统上所有已安装的内核。
dpkg --list | grep linux-image
查找所有低于您当前内核的内核。当您知道要删除哪个内核时,请继续执行以下操作以将其删除。
运行以下命令以删除您选择的内核。
sudo apt-get purge linux-image-x.x.x.x-generic
然后,当您完成清除时,答案会说“update-grub2”,这现在可能已经过时了:sudo update-grub
应该足以满足 Ubuntu 14.04 以后的需求。然后他们还说“重新启动您的系统”(这似乎是为了您可以看到清理过的启动菜单),因此在这种情况下没有必要。
grub 引导加载程序菜单曾经在主页面上显示所有较旧的内核版本,但现在它们被放置在子菜单后面。它更整洁,但 Ubuntu/Linux 的新手可能没有意识到它们在那里占用了空间。
正如建议的那样,不要删除当前内核,并且也建议保留以前的内核版本,以防万一您需要回滚到那个内核版本。
有更快的方法可以做到这一点,但我更喜欢这种方法的简单性,主要是因为我可以理解沿途的每个命令:
“我使用的是什么内核版本?我有什么内核版本?好的,清除那个。”
冲洗,重复,欣赏你腾出的空间。
从dpkg --list | grep linux-image
终端提供的结果中复制要删除的特定旧内核的名称,然后使用sudo apt-get purge
并粘贴复制的名称是相当容易的。
删除 3 或 4 个较旧的内核通常会在您的根驱动器中释放大约 1 GB 的空间。
zor*_*.cz 12
当我需要在服务器上腾出更多可用空间时,我使用以下命令:
find / -type f -size +50M -exec du -h {} \; | sort -n
Run Code Online (Sandbox Code Playgroud)
它找到所有大于 50 MBdu -h
的文件,并且“ ”创建一个更好的文件列表和"sort -n
“管道后按文件大小数字排序的列表。
小智 11
对我来说,问题在于悬空且未使用的 Docker 镜像和卷。
我使用以下命令来查找可以回收多少空间:
docker system df
Run Code Online (Sandbox Code Playgroud)
接下来,如果您打算仅修剪悬空图像:
docker system prune
Run Code Online (Sandbox Code Playgroud)
如果你想全力以赴进行深度清洁,那就用力修剪:
docker system prune -af --volumes
Run Code Online (Sandbox Code Playgroud)
我回收了大约 70 GB 的空间。我的日常工作涉及大量与 Docker 相关的工作。
按照Ubuntu 社区文档的说明,我发现了一个巨大的垃圾文件——它看起来像是 /var/log/syslog.1 的备份,大概是有什么东西在向 syslog 喷射大量输出......
找到它的命令是:
sudo find / -size +1G
Run Code Online (Sandbox Code Playgroud)
然后在名为的文件夹中的任何大文件.Trash
可能都可以删除...
您无法更改包管理器安装应用程序的路径。大多数应用程序文件保存为/usr
. 如果您想恢复根分区上的空间,移动/usr
到其他分区是一个可能的解决方案。
来自评论:
复制时保留权限,即如果您不确定文件管理器将做什么,最好使用命令行。
正确的方法是将新的文件系统安装到 /usr 或使用mount --bind
. 目前尚不清楚符号链接的工作效果如何。