Як мінімізувати використання дискового простору


29

Одна з моїх машин - 2 Гб EeePC Surf , акуратний нетбук з дуже обмеженими ресурсами. Настільки обмежений, що зараз у мене залишилось 22 МБ вільного місця.

На ньому я запускаю Arch Linux з Openbox DE і безліччю необхідних додатків, щоб він функціонував як мобільний ПК.

Які методи доступні для виділення зайвого простору?


@Stefan скільки оперативної пам’яті має? (просто цікаво, чи можливо ставити такі речі, як / tmp, у таран)
xenoterracide

1
@Stefan також ... якщо ви готові пройти експериментальний шлях ... btrfs нібито підтримує стиснуту файлову систему (або збирається?), Можливо, перевірте це
xenoterracide

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

@xeno, 490 Мб оперативної пам’яті, і це du -sh /*?
Стефан

@Stefan, так що ... ой ... ви можете cd /і бігати, du -sh *і свердлити ... (у вас насправді не вистачає оперативної пам’яті, щоб зберігати в ній речі)
xenoterracide

Відповіді:


19

Ось кілька пунктів, з яких можна почати:

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

    Обмежити або фільтрувати вихід на пакунки, які не вимагаються жодним встановленим пакетом.

  • Очистіть кеш-пакет пакетів за допомогою pacman -Sc

  • Завжди використовуйте pacman -Rsдля видалення також невикористаних залежностей пакета.

  • Щоб знайти "великі файли" та папки, які використовують великі частини диска, приємним доповненням duє xdiskusage. Цей невеликий інструмент дозволяє швидко переглядати вашу файлову систему та бачити графічне зображення використання дисками папок.


pacman -ccчистити весь кеш, включаючи встановлені пакети, я думаю. Зазвичай не рекомендується, оскільки згодом ви можете їх створити як резервні копії.
ксенотеррацид

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

3
Для очищення простору /я виявився pacgraphдійсно корисним. Він може сортувати встановлені пакети за розміром, так що ви можете краще визначити пріоритет, що має сенс видалити. (Він може навіть малювати графіки залежності SVG, але корисний лише з командного рядка.)
Анко,

4
ncduце класна альтернатива командному рядку xdiskusage. Хоча Baobab - найкращий графічний додаток для цієї мети.
Заз

10

ПОПЕРЕДЖЕННЯ. Ці ідеї призначені лише для користувачів, які добре розбираються як в Linux, так і в Arch Linux.

Якщо ви готові в'їхати на небезпечну територію, ви можете зменшити встановлення базової арки до менш ніж 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-прошивки, який поверне всю прошивку /usr/lib/firmware.)

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

Месяцями я успішно запускав NAS-сервер із пристрою диска на модуль 512 Мб, використовуючи ці методи, однак вони все ще не для слабкого серця. (Я також використовував LinuxFromScratch для створення подібного проекту лише у 128 Мб сховища, але це вже інша історія ...)


Змінити / додати:

Ось ще кілька методів, якими ви можете скористатись додатковим простором:

  • Позбавлення 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
Мені теж цікаво це зробити .. Прошивка здається найбільшим виграшем для мене, я намагаюся зробити невелику візитну коробку, тому потрібна лише прошивка, необхідна для запуску арки на virtualbox ... чи є простий спосіб знайти Яка прошивка потрібна?
Том Б

попередження: просто спробував upx, він не грає добре з усіма видами exectuables, напр .: він залишив mysqld & mongodb segfaulting
Айуш

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 днів. Видалити ці файли слід безпечно.
користувач202729

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

Почнемо з колод

У мене 717 мб /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.

Більше інформації тут, як налаштувати журнал тут .

Пакети

Я маю 660M /var/cache/pacman. Це було 1,8 гб, але я побіг pacman -Scвидалити невикористані пакети. Давайте видалимо решту:

pacman -Scc

/ usr / share / locale

Дуже багато користувачів видаляють його або принаймні прибирають. Але я можу бути проблемою . Але замовлення 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
резервного копіювання

1
Порада: якщо ви робите du -xkd1в /каталозі, він не спускатиметься на інші точки монтажу.
fdmillion

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 . (Але це не підтримується, і якщо воно порушить вашу систему, ви зможете зберегти шматки.)
ефемія

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

0

Я б запропонував AUTOMATING подивитися ваші власні дуже старі файли і подивитися, якщо це необхідно, і видалити їх. Це можна зробити за допомогою двох речей. Один пише findкоманду шукати дуже старі файли. і використовуючи цей вихід (можливо, трубопровід) для lograteскрипту, щоб архівувати файли, старші за 3 місяці, та видаляти файли, старші 3 місяців в архіві, та відправляти пошту за 1 день до видалення. Так що ви можете бути впевнені, що не втратили жодного важливого файлу. Отже, нарешті, вам знадобляться наступні команди для виконання сказаного:

find , | , logrotate , mail, crontab

Я не збираюся ложкою годувати тебе. Я робив це раніше, але був доволі успішним у цьому, і пізніше був знятий, тому що ми вирішили піти nagiosна моніторинг, оскільки він був більш налаштований робити такі речі на корпоративному сервері. Я думаю, якщо mailкоманда для вас ще не налаштована, ви можете виявити, що найскладніший відпочинок повинен бути прямо вперед. Це все необхідно зробити за допомогою сценаріїв bash і введення цього в роботу cron і запускати кожні х днів. Вивчіть сценарій баш, це буде дуже корисно не тільки для цього, але і полегшить ваше життя за допомогою * nix. Тому використовуйте свою улюблену пошукову систему в Інтернеті і читайте про вищезазначені команди та граматичні сценарії. І зв’яжіть їх разом і протестуйте. Після задоволення приведене в регулярне використання. Запевняю, це буде весело робити це. Ви багато чого навчитесь, якщо раніше цього не робили.

  • Сподіваюся, що це допомагає

1
З мого досвіду я виявив, що більшість речей, що займають диск, - це не файли, пов’язані з ОС, а мої власні файли, накопичені за певний проміжок часу, отже, я запропонував вище.
bagavadhar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.