Як звільнити місце на диску?


181

Мій хмарний сервер Ubuntu залишив лише 900 Мб дискового простору.

Я просто спорожню каталог / tmp і цікавлюсь, чи є якесь інше місце для очищення.


1
Спробуйте і цей: dpkg -l | grep ^ rc | вирізати -d '' -f3 | xargs sudo apt-get purge -y
crsuarezf

Якщо ви використовуєте docker
Джерард Карбо

для багатьох випадків:sudo docker container prune -f && sudo docker image prune -f
smftr

Відповіді:


104
sudo apt-get autoremove

Це може очистити багато guff (старі ядра тощо), які були замінені. Ви можете зробити аналогічну річ у Synaptic (завантажте її та виберіть кнопку статусу, а потім опцію Auto-removable).


чи це не вплине на запущені програми, наприклад, якщо він видалить необхідний пакет, від якого залежить будь-яка програма ?.
користувач3215

1
Ні. Autoremove шукає осиротілих пакетів, тобто пакетів, які ви не встановили явно (самі позначені авто) та не мають залежностей. Якщо ви використовуєте aptitudeзамість цього apt-get, він може очищатись, коли ви йдете, але для старих установок досить часто збирати плот встановлених ядер, коли з’являються оновлення безпеки.
Олі

1
Друкарня в моєму останньому коментарі. Я мав на увазі сказати, що осиротілі пакети - це ті, від яких не залежить, а не ті, у яких "немає залежностей". Вони, можливо, можуть мати залежності, і якщо вони були тільки для цього сиротного пакету, їх також видалять. Деякі рази (із справді глибокими деревами залежності) може знадобитися кілька авторемонтів, щоб прибрати.
Олі

5
Хоча вищезазначена команда, безумовно, корисна, вона не буде видаляти старі ядра. Це потрібно зробити вручну або за допомогою додаткових інструментів, таких як Ubuntu Tweak.
кодування

1
@nyarlathotep Це буде видалити заголовок файли ядра, які на перший погляд може зробити один думаю , що видалення старих ядер - старі ядра залишаються, однак (спробуйте dpkg --get-selections | grep linux-image).
drevicko

211

Щоб видалити завантажені пакети (.deb), які вже встановлені (і більше не потрібні)

sudo apt-get clean

Щоб видалити всі збережені архіви з кешу для пакетів, які вже не можна завантажити (таким чином, пакунки, які вже не знаходяться в сховищі або мають новішу версію в сховищі).

sudo apt-get autoclean

Щоб видалити непотрібні пакунки (Після видалення програми можуть з’явитися пакунки, які вам більше не потрібні)

sudo apt-get autoremove

Щоб видалити старі версії ядра

sudo apt-get remove --purge linux-image-X.X.XX-XX-generic

Якщо ви не знаєте, яку версію ядра видалити

dpkg --get-selections | grep linux-image

Джерело: Limpiando Ubuntu: comandos y programas (actualización) ( перекладено Google )


1
Біг cleanзвільнив зовсім небагато місця. Відразу після цього я побіг autocleanі вільний простір зменшився на 45 Мб. Біг cleanзнову випустив цей додатковий простір.
Дрю Ноакс

8
Я видалив усе перелічене зображення Linux, через dpkg --get-selections | grep linux-imageяке у мене виникли помилки завантаження - ubuntu зник із меню завантаження grub - ця відповідь усунула проблему - спробуйте не видалити останнє зображення
laplasz

Що саме ми робимо, коли видаляємо зображення Linux?
Менелаос Бакопулос

4
Гаразд, на це вже було відповідено 100 разів (і в цій темі також), але мені здається, що це було дивним чином, коли його було звернено 160 разів, тому що: sudo apt-get clean це -просто- видалить з усіх пакетів копію пакетів, які у вас можуть бути завантажується під час встановлення + оновлення. Це майже спорожнить каталог / var / cache / apt / archives. ... Так що наступного разу , коли ви запустите sudo apt-get updateйого буде повторно завантажити все (вже є). Просто голова! .. :)
Ностромов

168
  • покажіть топ 10 найбільших підрозділів у поточному режимі.

    du -sk * | sort -nr | head -10
    
  • скористайтеся файловим світлом або kDirStat, щоб побачити, куди візуально збирається місце на диску

  • перевірте, чи є у вас старі ядра для видалення

    ls -lh /boot
    
  • пакети для чищення

    sudo apt-get autoremove
    sudo apt-get autoclean
    

    переглянути список усіх встановлених пакетів, відсортованих за розміром. Якщо ви бачите щось велике і не використовуєте його - видаліть його

    dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
    
  • очистити невикористані файли мови з перекладами (їх є багато)

    sudo apt-get install localepurge
    
  • перевірити вміст / var / tmp /

    du -sh /var/tmp/
    
  • перевірити також

    man deborphan
    
  • Пошук великих файлів:

    find / -type f -size +1024k
    

    або

    find / -size +50000  -exec ls -lahg {} \;
    
  • великі встановлені пакети

    dpigs
    

це частина пакету: debian-goodies


4
Щоб знайти великі файли, я пропоную ncdu, що забезпечує швидкий спосіб дізнатися, які каталоги використовують ваш дисковий простір
rubo77

1
kDirStatзамінено наbaobab
rubo77

17

Я просто випустив майже 2 концерти, видаливши старі файли ядер і заголовки:

використання

uname -r

щоб перевірити поточну версію

dpkg -l linux-image-* linux-headers-*

щоб побачити всі старі файли ядер та заголовків,

sudo apt-get remove linux-image-<XYZ> linux-headers-<XYZ>

apt-get removeкоманда підтримує символи узагальнення, так що ви можете зробити apt-get remove linux-image 3.0.* linux-headers-3.0.*, наприклад, позбутися від багатьох відразу.

Переконайтеся, що ви, звичайно, не знищите видалення поточного ядра! І, можливо, збережіть одну-дві старі версії, про всяк випадок ... але не 10 чи 20!


Що трохи про макетів? Перш ніж використовувати його, я ще раз перевірив би це, бо спробував це, і отримав більше, ніж хотів. Цілком можливо (можливо, навіть ймовірно), що я набився якимось чином, але не знаю, як і все-таки втратив більше заголовків, ніж хотів.
glaucon

Підстановочні картки - це підстановочні символи, що не є регулярними гексами.
Чай Т. Рекс

13

Не забудьте випорожнити кошик.

введіть тут опис зображення


Або з командного рядка:

rm -r ~/.local/share/Trash/info/ && rm -r ~/.local/share/Trash/files/  

11

Я дуже рекомендую вам програму BleachBit, яка очищає все на Ubuntu.

Встановіть його за допомогою наступної команди:

sudo apt-get install bleachbit


11

Видаліть великі пакети, якими ви не користуєтесь

Деякі пакети можуть бути досить великими. Зручний спосіб їх пошуку - це використання dpigs. Він не встановлений за замовчуванням, але його можна знайти debian-goodies( проект GitHub )

sudo apt-get install debian-goodies

Тоді:

$ dpigs
419576 texlive-latex-extra-doc
204112 nvidia-319
175463 google-chrome-stable
141058 linux-image-extra-3.11.0-15-generic
113173 libreoffice-core
104822 valgrind
102322 qt4-doc
93337 blender
91105 texlive-pstricks-doc
90517 libboost1.53-dev

Є кілька варіантів:

-n, --lines=N
  Display the N largest packages on the system (default 10).
-s, --status=status-file
  Use status-file instead of the default dpkg status file.
-S, --source
  Display the largest source packages of binary packages installed
  on the system.
-H, --human-readable
  Display package sizes in human-readable format (like ls -lh or du -h)
-h, --help
  Display this message.

10

Видаліть всі старі версії ядра автоматично

Увага: Якщо ви тільки що оновили ядро, перезавантажтесь перед тим, як видалити старіші версії!

Не забудьте перевірити, яке ядро ​​ви використовуєте:

uname -r

Потім як корінь:

sudo apt-get remove --purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')

прочитайте цей потік, щоб бути безпечним, щоб не видаляти потрібні ядра за допомогою цієї команди!


8

Якщо ви використовуєте UFW, перевірте папку журналів. На одній із моїх машин UFW генерував 8Gb журналів за пару днів.

Ви також можете спорожнити підходящий кеш за допомогою:

sudo apt-get clean

Чи можна було знайти файли журналів UfW?
Цікавий учень

8

Спробуйте скористатися BleachBit ( розташований у sourceforge ). Це чудова програма. основна ідея полягає в тому, що він швидко звільняє місце на диску і видаляє багато сміття, прихованого в системі. Існує близько 70 програм, які можна розпізнати та витерти. Також є можливість використовувати його для «витирання» вільного місця на диску. Я думаю про це як CCleaner з Windows тільки для Linux.


3
Зауважте, що питання спеціально задає серверні інструменти, і це програма для настільних ПК (вимагає відображення X).
Райре

Найкращий інструмент до цих пір!
Роджер

8

Перевірте також велику кількість файлів журналів:

sudo du -h /var/log

Або як rubo77 зазначає у коментарях, ви можете використовувати інструмент використання диска NCurses:

sudo ncdu /var/log

зручна команда, в якій перераховано розмір файлу, а не "кількість файлів журналу"
dogmatic69

або використовуватиsudo ncdu /var/log
rubo77

@ rubo77, дякую, це дійсно приємний інструмент!
Дрю Ноакс

4

По-перше, є інструмент для переліку всіх великих папок і файлів. Просто введіть "Baobab" у пускову установку. Видаляючи папки та файли, які вам не потрібні, ви отримуєте більше місця.


Потім є програма для видалення подвійних файлів. Програма називається fslint. Встановіть його, ввівши

sudo apt-get install fslint

у Терміналі.

або графічно

Встановіть fslint через програмний центр


Ви також можете очистити кеш пакетів за допомогою

sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove

Четвертий крок - видалення старих записів ядра. Це можна зробити, встановивши та відкривши Synaptic. У Synaptic знайдіть старі записи в ядрі (кожен запис у ядрі, який відображається в GRUB, за винятком новітнього) та видаліть його.


Хорошим кроком є ​​видалення кешу програми. Зробіть це, встановивши та запустивши bleachbit:

sudo apt-get install bleachbit

або графічно

Встановіть bleachbit через програмний центр

Важливо: Видалений кеш не можна відновити!


Останній крок - дефрагментація файлової системи. Зробіть для цього наступне:

cd $HOME
git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
./configure
make

За допомогою цих команд ви завантажуєте та компілюєте e2fsprogs. (Якщо у вас чи спільноти є кращий спосіб встановити програму, відредагуйте!)

Також переконайтеся, що git-coreвстановлено. Якщо ні, виконайте:

sudo apt-get install git-core 

або за допомогою програмного центру Встановіть git-core через програмний центр

Тепер ви можете запустити програму за допомогою:

cd $HOME/e2fsprogs/misc
./e4defrag /dev/sda1    #defragment /dev/sda1
./e4defrag -v /dev/sda1 # verbose output
./e4defrag -c /dev/sda1 # see overview of fragmentation status

Замініть / dev / sda1 на потрібну файлову систему або папку / файл. Зауважте, що для дефрагментації пристрою (наприклад, жорсткого диска) вам потрібні кореневі привілеї, але не для власних файлів.


Джерело (німецька): тут


Нічого собі, видалення старих версій linux-заголовка та linux-образів випустило близько півроку на мою установку 10.04. fslint - також чудова знахідка. Дякую.
Браддок

Замість baobab ви також можете скористатися інструментом командного рядка ncdu, щоб знайти великі папки та файли:sudo apt-get install ncdu
rubo77

4

чистіший сценарій

Цей сценарій виконає найбільші фрагменти на консолі:

  • Очистити влучний кеш
  • Видаліть конфігураційні файли, що залишилися від невстановлених пакетів .deb (трапляється, якщо ви не використовуєте --purgeкомутатор apt-get)
  • Видаліть кожне ядро, крім того, яке ви використовуєте
  • Очистіть кошики кожного користувача (включаючи root)

створіть файл із цим вмістом і надайте йому права на виконання:

#!/bin/bash
# Adapted from 71529-ubucleaner.sh - http://www.opendesktop.org/CONTENT/content-files/71529-ubucleaner.sh

OLDCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')
CURKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')
LINUXPKG="linux-(image|headers|ubuntu-modules|restricted-modules)"
METALINUXPKG="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"
OLDKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $LINUXPKG |grep -vE $METALINUXPKG|grep -v $CURKERNEL)
YELLOW="\033[1;33m"; RED="\033[0;31m"; ENDCOLOR="\033[0m"

if [ $USER != root ]; then
  echo -e $RED"Error: must be root! Exiting..."$ENDCOLOR
  exit 0
fi

echo -e $YELLOW"Cleaning apt ..."$ENDCOLOR
aptitude clean
apt-get autoremove
apt-get autoclean

echo -e $YELLOW"Those packages were uninstalled without --purge:"$ENDCOLOR
echo $OLDCONF
#apt-get purge "$OLDCONF"  # fixes the error in the original script
for PKGNAME in $OLDCONF ; do  # a better way to handle errors
  echo -e $YELLOW"Purge package $PKGNAME"
  apt-cache show "$PKGNAME"|grep Description: -A3
  apt-get -y purge "$PKGNAME"
done

echo -e $YELLOW"Removing old kernels..."$ENDCOLOR
echo current kernel you are using:
uname -a
aptitude purge $OLDKERNELS

echo -e $YELLOW"Emptying every trashes..."$ENDCOLOR
rm -rf /home/*/.local/share/Trash/*/** &> /dev/null
rm -rf /root/.local/share/Trash/*/** &> /dev/null

echo -e $YELLOW"Script Finished!"$ENDCOLOR

Адаптовано з 71529-ubucleaner.sh


знайти великі папки та пакети

Деякі інструменти, які допоможуть вам знайти великі папки та пакети:

sudo apt-get install ncdu debian-goodies deborphan

sudo ncdu /    # lists all folders by size on the console (like the gui `baobab`)
dpigs -H       # shows large packages that you don't use
man deborphan  # finds packages that have no packages depending on them
deborphan --guess-all --libdevel | xargs apt-get -s purge

локалепурге

Використовуйте localepurge для видалення невикористаних мов у вашій системі:

sudo apt-get install localepurge

видалити старі оснащені зображення

LANG=c snap list --all | awk '/disabled/{print $1, $3}' | \
    while read snapname revision; do \
        snap remove "$snapname" --revision="$revision"; \
    done

відбілювач

Чудовий графічний інструмент для графічного інтерфейсу, який відповідає всім потребам:

sudo apt-get install bleachbit

видаліть керування та документацію

Крім того, ви можете видалити керівництво та документацію, як описано в Ubuntu Wiki :

Створіть файл /etc/dpkg/dpkg.cfg.d/01_nodoc, який визначає потрібні фільтри. Приклад:

path-exclude /usr/share/doc/*
# if we need to keep copyright files for legal reasons:
# path-include /usr/share/doc/*/copyright
path-exclude /usr/share/man/*
path-exclude /usr/share/groff/*
path-exclude /usr/share/info/*
# lintian stuff is small, but really unnecessary
path-exclude /usr/share/lintian/*
path-exclude /usr/share/linda/*

Видаліть один і той же набір файлів і каталогів у постінструванні проекту-config. Приклад:

echo "Removing documentation..."
# if we need to keep copyright files for legal reasons:
# find /usr/share/doc -depth -type f ! -name copyright | xargs rm || true
# else:
find /usr/share/doc -depth -type f | xargs rm || true
rm -rf /usr/share/man/* /usr/share/groff/* /usr/share/info/* /usr/share/lintian/* /usr/share/linda/* /var/cache/man/*

Залежно від вашого випадку, ви можете знайти ще кілька варіантів цього сценарію: github.com/box-cutter/debian-vm/blob/master/script/minimize.sh
rubo77

Я отримав попередження, виконуючи цей скрипт, що я збираюся видалити ядро ​​з тим самим номером версії, що і запускався.
Крістоф Де Троєр

перевірте поточне ядро, яке ви використовуєте uname -a. Якщо ви тільки що раніше зробили apgra-get ugrade раніше і отримали нове ядро, це може бути причиною того, що поточний курнел, який ви використовуєте, не є найновішим, що встановлений? Зробіть перезавантаження, перш ніж розпочати цей сценарій
rubo77

Сценарій minimize.sh перемістився: github.com/boxcutter/debian/blob/master/script/minimize.sh
rubo77

3

Каталог '/ tmp' ніколи не слід очищати вручну, якщо це абсолютно не потрібно (тобто закрита програма не очистилася після себе).

Ви можете шукати, де простір може заповнюватися, використовуючи команду 'du'; зазвичай цікаві місця знаходяться всередині '/ var'. Назвати двох звичайних підозрюваних '/ var / log' та '/ var / cache'. Хоча у мене були деякі користувачі, які встановлюють утиліту для резервного копіювання і ніколи не розуміють, що вона створює ГБ інкрементальних резервних копій у '/ var / backup', які збираються протягом тижня чи місяця, щоб заповнити весь простір на диску.


Дякую!. Як ви сказали, у мене в МС під / var / cache є місце, і цікаво, як видалити непотрібні файли.
користувач3215

2

Для очищення використовуйте ubuntu-tweak .

він очищає всі * .deb, які завантажуються в інсталяційні програми.


не працює з KDE
rubo77

1

Якщо ви вже видалили багато сміття, але дисковий простір, здається, не очищено, просто перезавантажте ubuntu. Або якщо ви не хочете перезавантажувати, просто запустіть команду, як у подібному питанні .

sudo service rsyslog restart

0

Коли мені потрібно зробити більше вільного місця на серверах, я використовую цю команду. Він знайде всі файли більше 50 Мб, а "du -h" покращить список файлів, а "сортувати -n" після труби скласти список числовим чином, відсортований за розміром файлу.

find / -size +50M -type f -exec du -h {} \; | sort -n

1
Вам краще буде використовувати пил ncdu /замість цього
rubo77

1
Дано du -h, використовуйте sort -hтакож.
муру

-3
uname -r 

(щоб побачити своє)

apt-get remove linux-image 3.0.* 

(ваші старіші версії). Це дало мені звільнений простір на 600 Мб.


3
Незважаючи на те, що за допомогою таких команд, якщо ви не обережні, ви можете видалити останнє ядро ​​(або навіть усі ядра).
ndemou
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.