Как минимизировать использование дискового пространства


29

Одной из моих машин является EeePC Surf объемом 2 ГБ , аккуратный нетбук с очень ограниченными ресурсами. Настолько ограниченный, что сейчас у меня осталось 22 МБ свободного места.

На нем я использую Arch Linux с Openbox DE и набором необходимых приложений для его работы в качестве мобильного ПК.

Какие методы доступны для удаления ненужного пространства?


@ Стефан, сколько у него оперативной памяти? (просто интересно, возможно ли поместить такие вещи, как / tmp в оперативную
память

1
@Stefan также ... если вы хотите пойти экспериментальным путем ... btrfs предположительно поддерживает сжатую файловую систему (или собирается?), Возможно, проверьте это
xenoterracide

@stefan также, du -sh /чтобы увидеть, где используется большая часть вашего пространства.
ксенотеррацид

@ xeno, 490 МБ ОЗУ, и это du -sh /*?
Стефан

@ Стефан, так оно и есть ... упс ... вы можете cd /и бегать, du -sh *и сверлить ... (у вас на самом деле недостаточно баранов для хранения вещей в нем)
ксенотеррацид

Ответы:


19

Вот несколько моментов, с которых вы могли бы начать:

  • Посмотрите на пакеты, установленные в вашей системе, pacman -Qи удалите те, которые вам не нужны. Хорошим началом может быть добавление -t переключателя:

    Ограничьте или отфильтруйте выходные данные для пакетов, которые не требуются ни одному из установленных в настоящее время пакетов.

  • Очистите кеш пакетов от pacman pacman -Sc

  • Всегда используйте pacman -Rsдля удаления также неиспользуемые зависимости пакета.

  • Хорошим дополнением duявляется поиск «больших файлов» и папок, которые используют большие части диска xdiskusage. Этот небольшой инструмент позволяет быстро просматривать файловую систему и видеть графическое представление использования папок диском.


pacman -ccочистить весь кеш, включая установленные пакеты, я думаю. Обычно не рекомендуется, так как вы можете захотеть сделать это позже.
ксенотеррацид

@xeno, я уже смонтировал директорию на своем рабочем столе --cachedir, поэтому мне не нужно хранить какие-либо файлы pkg.
Стефан

3
Для очистки пространства /я нашел pacgraphдействительно полезным. Он может сортировать установленные пакеты по размеру, чтобы вы могли лучше расставить приоритеты в том, что имеет смысл удалять. (Он может даже рисовать графики зависимостей SVG, но полезен только из командной строки.)
Anko

4
ncduэто крутая альтернатива командной строки xdiskusage. Баобаб - безусловно, лучшее графическое приложение для этой цели.
Заз

10

ВНИМАНИЕ: Эти идеи предназначены только для пользователей, которые хорошо разбираются как в Linux в целом, так и в Arch Linux.

Если вы хотите проникнуть на опасную территорию, вы можете уменьшить базовую установку Arch до менее 500 МБ. Это требует выполнения некоторых очень опасных вещей:

  1. удаление всех ненужных локалей (уже охвачено)
  2. удаление любых файлов прошивки, не необходимых для запуска вашей системы (из /usr/lib/firmware)
  3. удаление любых модулей ядра, не необходимых для запуска вашей системы (из /usr/lib/modules/...)
  4. удаление любых .aфайлов /usr/lib(только если вы никогда не используете систему для компиляции программного обеспечения. Примечание: это включает использование makepkg)
  5. удаление всего внутри /usr/include(только если вы никогда не используете систему для компиляции программного обеспечения)
  6. удаление ненужной документации /usr/share/docи/usr/share/info
  7. (ОЧЕНЬ ПЛОХАЯ ИДЕЯ, если не для сервера) удаление страниц руководства из /usr/share/man
  8. (тоже плохая идея) удаление ненужных терминальных дескрипторов /usr/share/terminfoи ненужных файлов часовых поясов из/usr/share/zoneinfo
  9. (ОПАСНО) работает strip *на всех папках, содержащих исполняемые файлы ( /usr/binи /usr/sbin)
  10. (в экстремальных ситуациях) использование такого инструмента, как upxсжатие больших двоичных файлов (двоичные файлы Samba пригодны для этого, поскольку они имеют тенденцию быть довольно большими, поскольку они часто компилируются статически.) Также обратите внимание, что использование upxозначает, что весь несжатый двоичный файл должен соответствовать ОЗУ во время выполнения, поэтому будьте измотаны на системах с низким ОЗУ

Прежде чем делать что-либо из этого, создайте полную резервную копию вашей системы. К счастью, Linux делает это относительно легко - если вы можете подключить и смонтировать внешний том (например, USB-диск), вы можете сделать что-то вроде cd / && tar -cf /mnt/usb/mySystem.tar /резервного копирования всей системы.

Еще раз отметим, что я на самом деле не рекомендую делать вышеизложенное (особенно с 7 по 9), если у вас нет глубоких знаний, опыта и понимания внутренних компонентов Linux и Arch Linux . Игра с любым из перечисленных мною файлов может нанести ужасный ущерб системе, так что вы были предупреждены. Если вы не знаете, нужен ли вашей системе определенный файл прошивки, модуль и т. Д., Прежде чем связываться с ним, проведите исследование. (Имейте в виду, что удаление модулей ядра, в которых нуждается ваша система, может привести к невозможности загрузки системы или к системе без поддержки клавиатуры / сетевой карты / звука / дисплея / и т. Д., Или ко всякому другому необъяснимому поведению.)

Также обратите внимание, что любые обновления пакетов могут и будут восстанавливать многие файлы, которые вы удалили выше. Если вы решите пойти по этому пути, вы, возможно, захотите в конечном итоге написать сценарий удаления ненужных файлов и запускать свой скрипт после каждого обновления основного пакета. (Пример: обновление ядра вернет все модули ядра, а также обновит через зависимый пакет linux-firmware, вернув все прошивки /usr/lib/firmware.)

Наконец, следите за тем, /var/logкак файлы журнала со временем будут расти. Вы можете удалить прошлые журналы, но сохранить текущие, выполнив что-то вроде rm *\@*.journalсвоей папки журнала.

Я успешно запускал NAS-сервер с устройства Disk-on-Module объемом 512 МБ в течение нескольких месяцев, используя эти методы, однако они все еще не для слабонервных. (Я также использовал LinuxFromScratch для создания аналогичного проекта только на 128 МБ памяти, но это другая история ...)


EDIT / ADD:

Вот еще несколько методов, которые вы можете использовать, чтобы получить дополнительное пространство:

  • Избавляемся от libgo. libgoБиблиотека поставляется с gcc-libsи AFAIK используется только приложений , написанных на языке Go. Я не могу вспомнить ни одно приложение, которое я использую, которому нужна эта библиотека. В моей системе это 40 МБ. Когда вы пытаетесь похудеть, это много места. Я удалил его из своих «мини» установок без каких-либо вредных последствий для всего, что я делаю (но опять же, это я, YMMV!)

  • Сокращение libicudata.so. Это 27 МБ в моей системе. В основном это тонна данных юникода / локали, сжатых в объект библиотеки. В сети есть инструмент, который может создавать меньшие версии этого файла, но он не обновлялся для текущей версии (и вы не можете использовать более старые файлы в более новых версиях). Я не пробовал делать это вручную, но если вы можете понять, как, вы можете побрить около 20-22 МБ от этого файла.

  • Если вы используете Python, вы можете сохранить 37MB или так удалением testбиблиотеки из python2: rm -r /usr/lib/python2.7/testи о 66MB, удалив его Python3: rm -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или что - то подобное. Это может быть веселый летний проект. :-)


2
Я тоже заинтересован в этом ... Прошивка кажется самым большим преимуществом для меня, я пытаюсь сделать маленькую бродячую коробку, поэтому мне нужна только прошивка, необходимая для запуска arch на virtualbox ... Есть ли простой способ найти какая прошивка требуется?
Том Б

предупреждение: просто пытался upx, он не играть хорошо со всеми типами exectuables, ех: он оставил туздЫ & MongoDB segfaulting
Ayush

3
Re: Пакет обновления может и будет восстановить многие файлы, которые вы удалите . Расширяя /etc/pacman.conf NoExtractопределениями (могут быть определены несколько раз), вы можете навсегда решить эту проблему. Один пример обновления только драйверов Realtek nic:NoExtract = usr/lib/firmware/* !usr/lib/firmware/rtl_nic/*
Pro Backup

find /usr/lib/firmware -atime +30найдет файлы прошивки, к которым нет доступа в течение 30 дней. Это должно быть безопасно удалить эти файлы.
user202729

5

TLDR

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.

Оставим только 100 Мб логов:

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 / доли / локали

Многие пользователи удаляют его или, по крайней мере, очищают. Но у меня может быть проблема . Но оформить заказ bleachbit (следующий абзац).

BleachBit

Автоматический очиститель . Удаляю много чего, но это были в основном локали.

$ pacman -S bleachbit
$ bleachbit -p system.*
Disk space to be recovered: 488.8MB
$ bleachbit -c system.*

Вы можете искать больше вещей для удаления:

bleachbit --list
bleachbit -p thunderbird.*

На весьма минимальной 64-разрядной установке Arch Linux общий установленный размер пакета bleachbit составляет 209,70 МиБ:Total Installed Size: 209.70 MiB
Pro Backup

1
Подсказка: если вы делаете это du -xkd1в /каталоге, он не сойдет в другие точки монтирования.
17

3

На 4 ГБ диске в моем Eeepc с Ubuntu он помог удалить некоторые файлы локали (из / usr / share / locale) и файлы справки Gnome (из / usr / share / gnome / help /). Оба были установлены для языков, которые я не использую. Не уверен, что Arch Linux даже установит все эти файлы.


да ... du -hs /usr/share/localeэто около 300 МБ ... я могу просто rm -rfненужные файлы?
Стефан

2
@Stefan wiki.archlinux.org/index.php/Locale Если вы редактируете /etc/locale.genи перезапускаете locale-gen, у вас должно быть меньше предварительно скомпилированных локалей. Если вы хотите освободить больше места в автоматическом режиме, вы можете попробовать aur.archlinux.org/packages.php?ID=11975 . (Но он не поддерживается, и если он сломает вашу систему, вы сохраните его.)
ephemient

1
localepurge - это скрипт для удаления дискового пространства, потраченного на ненужные локализации. Сначала отредактируйте /etc/locale.nopurge :) Он очистил ~ 300 МБ в первый раз, когда я его запустил, и десятки МБ каждые пару месяцев. Доступен в AUR.
tuk0z

0

Я бы посоветовал АВТОМАТИЗИРОВАТЬ просмотр ваших очень старых файлов и посмотреть, если это необходимо, и удалить их. Это может быть сделано с двумя вещами. Один пишет findкоманду для поиска очень старых файлов. и используя этот вывод (возможно, конвейер) для lograteсценария архивирования файлов старше 3 месяцев, удаления файлов старше 3 месяцев в архиве и отправки письма за 1 день до его удаления. Так что вы можете быть уверены, что не потеряли ни одного важного файла. Таким образом, в конце концов вам понадобятся следующие команды для выполнения вышеуказанного:

find , | , logrotate , mail, crontab

Я не собираюсь кормить тебя ложкой. Я делал это до того, как с этим справился, и позже его отменили, потому что мы решили пойти nagiosна мониторинг, так как он был более настроен на подобные вещи на сервере corp. Я думаю, что если mailкоманда еще не настроена для вас, вы можете обнаружить, что самый жесткий отдых должен быть прямым. Все это необходимо сделать с помощью сценариев bash, а также помещать их в работу cron и запускать каждые x дней. Изучите скрипты bash, это будет очень полезно не только для этого, но и для облегчения вашей жизни с * nix. Так что используйте вашу любимую поисковую систему в Интернете и читайте о вышеупомянутых командах и скриптах bash. И свяжите их вместе и проверьте это. После того, как доволен, положить в регулярное использование. Уверяю, это будет весело. Вы многому научитесь, если раньше этого не делали.

  • надеюсь, это поможет

1
По своему опыту я обнаружил, что большинство вещей, занимающих диск, не являются файлами, относящимися к ОС, а моими собственными файлами, накопленными за определенный период времени, поэтому я предложил выше.
Багавадхар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.