我的一台机器是2GB EeePC 冲浪,一款资源非常有限的简洁上网本。如此有限,现在我有22MB剩余可用空间。
对此,我正在奔跑架构Linux与开箱DE 及其作为移动 PC 所需的大量应用程序。
有什么方法可以消除一些不必要的使用空间?
答案1
您可以从以下几点入手:
查看系统上安装的软件包
pacman -Q
并删除不需要的软件包。一个好的开始可能是附加-t
开关:将输出限制或过滤到任何当前安装的软件包不需要的软件包。
清理 pacman 的包缓存
pacman -Sc
始终用于
pacman -Rs
删除未使用的包依赖项。要查找使用大部分磁盘的“大文件”和文件夹,一个很好的补充
du
是xdiskusage
.这个小工具可以让您快速浏览文件系统并查看文件夹磁盘使用情况的图形表示。
答案2
警告:这些想法仅适用于精通 Linux 整体和 Arch Linux 的用户。
如果您愿意涉足危险领域,您可以将基础 Arch 安装缩减至 500MB 以下。这需要做一些非常危险的事情:
- 删除所有不必要的区域设置(已涵盖)
- 删除运行系统不需要的任何固件文件(来自
/usr/lib/firmware
) - 删除运行系统不需要的任何内核模块(来自
/usr/lib/modules/...
) - 删除其中的任何
.a
文件/usr/lib
(仅当您从未使用系统编译软件时。注意:这包括使用makepkg
) - 删除所有内容
/usr/include
(仅当您从不使用系统编译软件时) /usr/share/doc
从中删除不需要的文档/usr/share/info
- (非常糟糕的想法,除非可能对于服务器)从中删除手册页
/usr/share/man
- (也是一个坏主意)从中删除不需要的终端描述符
/usr/share/terminfo
和不需要的时区文件/usr/share/zoneinfo
- (危险)在包含可执行二进制文件(和)
strip *
的所有文件夹上运行/usr/bin
/usr/sbin
- (在极端情况下)使用诸如压缩较大二进制文件之类的工具
upx
(Samba 二进制文件非常适合这样做,因为它们通常是静态编译的,因此它们往往非常大。)另请注意,使用upx
意味着整个未压缩的二进制文件必须适合执行期间的 RAM,因此请注意 RAM 较低的系统。
在执行任何操作之前,请对系统进行完整备份。值得庆幸的是,Linux 使这变得相对容易 - 如果您可以连接并安装外部卷(例如 USB 驱动器),您就可以执行诸如cd / && tar -cf /mnt/usb/mySystem.tar /
备份整个系统之类的操作。
再次请注意,我实际上并不建议执行上述操作(尤其是 7 到 9),除非您有对 Linux 内部结构和 Arch Linux 的深入了解、经验和理解。使用我列出的几乎任何文件都可能以可怕的方式损坏系统,因此我们已警告您。如果您不知道您的系统是否需要某个固件文件、模块等,那么在搞乱它之前先进行研究。 (请注意,删除系统所需的内核模块可能会导致系统无法启动,或者系统没有键盘/网卡/声音/显示器/等支持,或者出现各种其他无法解释的行为。)
另请注意,任何软件包升级都可以并且将会恢复您在上面删除的许多文件。如果您确实决定走这条路,您可能希望最终编写删除不需要的文件的脚本,并在每次主要软件包升级后运行脚本。 (例如:升级内核将带回所有内核模块,并通过依赖项升级 linux-firmware 包,带回 中的所有固件/usr/lib/firmware
。)
最后,请密切关注/var/log
日志文件会随着时间的推移而增长。您可以通过rm *\@*.journal
在日记文件夹中执行类似操作来删除过去的日记,但保留当前的日记。
我已经使用这些技术在 512MB 磁盘模块设备上成功运行了 NAS 服务器数月,但是它们仍然不适合胆小的人。 (我还使用 LinuxFromScratch 在仅 128MB 存储空间中构建了一个类似的项目,但那是另一个故事了......)
编辑/添加:
您还可以使用以下几种方法来尝试获得额外空间:
摆脱
libgo
。该libgo
库附带gcc-libs
且仅由用 Go 语言编写的应用程序使用。我想不出我使用的任何应用程序需要该库。在我的系统上它的大小为 40MB。当你想减肥时,那是一个很大的空间。我已经将它从我的“迷你”安装中删除,对我所做的任何事情都没有不良影响(但再说一遍,那就是我,YMMV!)正在萎缩
libicudata.so
。我的系统上有 27MB。它基本上是压缩到库对象中的大量 unicode/区域设置数据。有一个在线工具可以制作此文件的较小版本,但它尚未针对当前版本进行更新(并且您不能在新版本中使用旧文件。)我还没有尝试过手动执行此操作,但是如果您能弄清楚如何操作,则可以将该文件减少约 20-22MB。如果您使用 Python,则可以通过
test
从 python2: 中删除该库来节省大约 37MBrm -r /usr/lib/python2.7/test
,通过从 python3: 中删除该库来节省大约 66MBrm -r /usr/lib/python3.6/test
。同样对于Python,你可以摆脱文件
.pyo
和.py
文件。这些.pyo
文件是“优化”文件,但 Python 从未真正使用它们。这些.py
文件是标准库的原始源代码。运行 Python 代码时,Python 通常读取的唯一文件是.pyc
(python 编译的)文件。cd /usr/lib/python2.7 && find . -name "*.pyo" -exec rm -v {} \;
和cd /usr/lib/python3.6 && find . -name "*.pyo" -exec rm -v {} \;
删除不必要的区域设置数据。有一个名为 AUR 的包
localepurge
可以自动执行此操作。不然就得在里面玩了/usr/share/locale
。您需要保留自己的语言环境和locale.alias
.对于身在美国的我来说,保留en_US
和locale.alias
删除其他所有内容可以节省大约 80MB 的空间。
现在,我想看到的是一个可以分析您的系统并确定您需要哪些内核模块以及您需要哪些固件文件的工具。这将是“安全”清理这些文件夹的好方法......
或者,也许有人应该制作一个使用uClibc
或diet-libc
或类似内容的 Arch“发行版”。这可能是一个有趣的夏季项目。 :-)
答案3
总长DR
journalctl --vacuum-size=100M #remove all logs, only retain 100mb
pacman -Scc #remove all package installation files (obsolete and current)
pacman -S bleachbit
bleachbit -c system.*
一、系统上有什么大事
du -d1 -h / 2>/dev/null | sort -h
/
这显示了您可以向下执行两级的最大目录的排序列表:
du -d2 -h / 2>/dev/null | sort -h
我的结果是:
0 /proc
0 /sys
0 /tmp
12K /dev
12K /srv
16K /lost+found
632K /run
4.3M /boot
13M /opt
15M /etc
75M /root
93M /home
2.4G /var
3.2G /usr
221G /mnt
227G /
我忽略/mnt
(因为那是外部驱动器)两个目录:var
和usr
。让我们看看里面有什么:
du -d1 -h /var /usr 2>/dev/null | sort -h
然后,再深入一点:
du -d1 -h /var/log /usr/share /usr/lib /var/cache 2>/dev/null | sort -h
让我们从日志开始
我有 717mb /var/log
。
我不喜欢随机删除目录,所以让我们以干净的方式进行操作:
$ journalctl --disk-usage
Archived and active journals take up 728.7M on disk.
我们只留下 100mb 的日志:
journalctl --vacuum-size=100M
...
Deleted archived journal /var/log/journal/ba5391...b.journal (8.0M).
...
Vacuuming done, freed 616.6M of archived journals on disk.
有关如何配置 Journalctl 的更多信息,请参见此处这里。
套餐
我有660M /var/cache/pacman
。它是 1.8gb,但我跑去pacman -Sc
删除未使用的包。让我们删除其余的:
pacman -Scc
/usr/share/区域设置
许多用户确实删除了它,或者至少清理了它。但我可能是一个问题。但请检查一下bleachbit(下一段)。
漂白位
自动清洗机。会删除很多东西,但主要是语言环境。
$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*
您可以查找更多要删除的内容:
bleachbit --list
bleachbit -p thunderbird.*
答案4
我建议自动查看您自己的非常旧的文件,看看是否有必要并删除它们。这可以通过两件事来完成。编写一个find
命令来查找非常旧的文件。并使用此输出(可能是管道)lograte
编写脚本来归档超过 3 个月的文件,并删除归档中超过 3 个月的文件,并在删除之前向 1 天发送邮件。这样您就可以确定您没有丢失任何重要文件。所以最后你需要以下命令来完成上述任务:
find , | , logrotate , mail, crontab
我不会用勺子喂你。我之前已经这样做过,并且非常成功,但后来被废弃了,因为我们决定进行nagios
监控,因为它更适合在公司服务器中执行此类操作。我认为如果mail
尚未为您配置命令,您可能会发现最困难的休息应该是直接的。这一切都需要通过 bash 脚本完成,并将其放入 cron 作业中并每 x 天运行一次。学习 bash 脚本,它不仅对此非常有用,而且可以让您的 *nix 生活更轻松。因此,请使用您最喜欢的互联网搜索引擎并阅读上述命令和 bash 脚本。并将它们绑在一起并进行测试。一旦满意即可正常使用。我保证这样做会很有趣。如果您以前没有做过这样的事情,您会学到很多东西。
- 希望有帮助