问题描述
我正在使用Ubuntu 11.04,我想在我的根目录中释放一些空间,这个空间已经过载了。我特别想要更改用于安装应用程序的路径(它们直接安装到根驱动器)。
另一个考虑因素是我正在研究MySQL数据库服务器。服务器安装在根目录本身,所以我不想冒失去任何数据的风险。
请给我一些提示,以帮助解决这个问题。
最佳解决方法
最近我遇到了类似的情况。安装了太多应用程序,并且他们开始使用我的根安装空间。我列出了我遵循的几个步骤,并希望你也可以使用相同的步骤。
-
清理apt-get缓存。以下命令将从apt-get缓存目录中删除所有下载的deb文件。运行以下命令:
sudo apt-get clean
-
将/home挂载点移动到不同的驱动器。以前,我的主文件夹位于根驱动器上。所以我将我的主文件夹移动到单独的驱动器。这有助于我从根安装中释放出很多压力,因为大多数应用程序将其数据存储在/home /user_name /文件夹中。阅读how to move home folder to separate drive.
-
增加root分区的大小我知道这是非常明显的答案。但请相信我,我们的数据需要随时间变化。我认为20 GB /root mount就足够了,但是有了一年,我的re-sized我的root mount并增加到50 GB。
次佳解决方法
我使用以下命令通过删除旧标头和图像成功清除了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
您可以检查执行命令的第一部分将清除哪些包:
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
第三种解决方法
使用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}'
第四种方法
sudo apt-get autoclean // clean /var/cache/apt/archives folder witch save packages while install.
sudo apt-get autoremove //this command remove unused lib packages.
sudo shutdown -rf // it will restart your pc immediately and check filesystem in next boot.
第五种方法
删除旧的内核版本(正如homebrand已经建议的那样)可以释放出相当大的空间,如果你还没有这样做的话。
有许多方法可以删除旧的内核版本,并且可以在下面链接的问题的答案中找到一系列不同的选项:
我首选的方法主要是从penreturns得到的答案,它被分解为相当简单易懂的步骤:
Open terminal and check your current kernel:
uname -r
DO NOT REMOVE THIS KERNEL!
Next, type the command below to view/list all installed kernels on your system.
dpkg –list | grep linux-image
Find all the kernels that are lower than your current kernel. When you know which kernel to remove, continue below to remove it.
Run the command below to remove the kernel you selected.
sudo apt-get purge linux-image-x.x.x.x-generic
当你完成清除时,答案会告诉’update-grub2’,现在可能已经过时了:sudo update-grub应该足以满足Ubuntu 14.04以上的要求。然后他们也会说“重启你的系统”(这似乎是为了让你看到清理过的启动菜单)所以在这种情况下没有必要。
grub引导程序菜单用于显示主页面上的所有旧内核版本,但它们现在放在sub-menu后面。它更整洁,但Ubuntu /Linux的新手可能并不知道他们在那里占用空间。
正如所建议的那样,不要删除当前的内核,也建议保留以前的内核版本,以防万一你需要回滚到那个内核版本。
有更快的方法可以做到这一点,但我更喜欢这种方法的简单性,主要是因为我可以理解沿途的每个命令:
“我使用的内核版本是什么?我有哪些内核版本?好的,清除那个版本。”
冲洗,重复,欣赏你已经释放的空间。
从dpkg –list |的结果中复制要删除的特定旧内核的名称相当容易grep linux-image为您提供终端,然后使用sudo apt-get清除并粘贴复制的名称。
删除3或4个较旧的内核通常会释放根驱动器中大约1 GB的空间。
第六种方法
按照Ubuntu community docs上的说明,我发现了一个庞大的垃圾文件 – 它看起来像是/var/log/syslog.1的备份,可能是某些东西向syslog喷出大量输出……
找到它的命令是:
sudo find / -size +1G
然后,名为.Trash
的文件夹中的任何大文件都可能很好删除…
第七种方法
当我需要在服务器上创建更多可用空间时,我使用此命令。它找到大于50 MB的所有文件和“du -h”制作berret文件列表,并在管道制作列表numericcaly按文件大小排序后“排序-n”。
find / -type f -size +50M -exec du -h {} \; | sort -n
第八种方法
这是我运行以在根分区上释放空间的脚本
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
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
## Rotate and delete old logs
/etc/cron.daily/logrotate
find /var/log -type f -iname *.gz -delete
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
## Show free space
df -Th | grep -v fs
}
第九种方法
在Ubuntu中,每个文件夹都可以拥有自己的文件系统。这意味着您可以将任何文件夹移动到其自己的分区,另一个磁盘甚至远程网络上。这在主目录中特别受欢迎,因为这意味着您可以在不更改个人设置或丢失任何文件的情况下重新安装Ubuntu。它在网络中也很受欢迎,用户应该可以登录到不同的计算机并仍然可以获取其个人设置和文件。但它在很多不同的情况下都很有用,例如你的。
应用程序未安装到特定文件夹中,就像您似乎建议的那样。应用程序的不同部分放在文件系统的不同部分。主程序通常放在/usr /bin中,而配置文件放在/etc中。在你的情况下,MySQL,数据库本身放在/var中的某个地方。我想/var /mysql。
由于/usr和/var都是根文件系统中的目录,因此它们将使用根文件系统空间。但正如我所说,你可以将它们移动到不同的文件系统。对于MySQL,您可以配置存储数据库的位置。例如,您可以轻松地将数据库移动到/home/username/.mysql/databases。
参考资料