summaryrefslogtreecommitdiff
path: root/LINUX/DISK/DF, DU.md
blob: a06b473555de84b4ba06d677897b81a40bb72974 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
мгновенно создать пустой файл, не используя touch:
`>text.txt

================================

команда `du` дает вам возможность исключить файлы определенного типа при расчете размера каталога

`du -h --exclude="*.txt" tutorials

================================

`df -help`
`df -h`    - размер и информация о дисках
`df -i`    - inode

. du -help`
`du -h`    - размер директории
`du -d1 / | sort -nr - с сортировкой по весу папки
  
$ **du** **опции** **/путь/к/папке**

А вот опции утилиты:

_**-a, --all**_ - выводить размер для всех файлов, а не только для директорий, по умолчанию размер выводится только для папок;
_**-B, --block-size**_ - указать единицы вывода размера, доступно: K,M,G,T,P,E,Z,Y для 1024 и KB, MB и так далее для 1000;
_**-c, --total**_ - выводить в конце общий размер всех папок;
_**-d, --max-depth**_ - максимальная глубина вложенности директорий;
_**-h, --human-readable**_ - выводить размер в единицах измерения удобных для человека;
_**--inodes**_ - выводить информацию об использованию inode;
_**-L, --dereference**_ - следовать по всем символическим ссылкам;
_**-l, --count-links**_ - учитывать размер файла несколько раз для жестких ссылок;
_**-P, --no-dereference**_ - не следовать по символическим ссылкам, это поведение используется по умолчанию;
_**-S, --separate-dirs**_ - не включать размер подпапок в размер папки;
_**--si**_ - выводить размер файлов и папок в системе си, используется 1000 вместо 1024;
_**-s, --summarize**_ - выводить только общий размер;
_**-t, --threshold**_ - не учитывать файлы и папки с размером меньше указанного;
_**--time**_ - отображать время последней модификации для файла или папки, вместо времени модификации можно выводить такие метки: atime, access, use, ctime;
_**-X, --exclude**_ - исключить файлы из подсчёта;
_**-x, --one-file-system**_ - пропускать примонтированные файловые системы;
_**--version**_ - вывести версию утилиты.

Здесь перечислены не все опции. Если вам надо больше, смотрите в:

_**man du**_

## Bash скрипт мониторинга свободного места в Linux

Рассмотрим простой bash скрипт, для мониторинга дискового пространства на сервере и отправке email уведомления администратору, если места недостаточно.

```sh
#!/bin/bash
CURRENT=$(df /dev/sdd5 | grep / | awk '{ print $5}' | sed 's/%//g)
THRESHOLD=90
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then   
echo "Осталось слишком мало дискового пространства. Используется:  $CURRENT%" | mail -s 'Заканчивается дисковое пространство !' -r home@server.ru vlapa@yandex.ru  
fi
```

При достижении заполняемости директории / до 90% к вам на почту будет отправляться уведомление. Добавьте данный скрипт в [cron](https://winitpro.ru/index.php/2020/04/21/planirovshhik-zadach-cron-v-linux/) и мониторьте вашу систему. Можно изменить скрипт, чтобы он смотрел за размером определенного раздела или каталога.

===========================
**du** — позволяет быстро и эффективно проанализировать использование дискового пространства, найти самые «тяжёлые» файлы и папки, чтобы освободить место.

🟠 **Показать размер папки:**
`du -sh /path/to/folder
➡️ Выводит общий размер папки в удобном формате (МБ/ГБ).

🟠 **Посмотреть размеры всех вложенных папок:**
`du -h /path/to/folder
➡️ Отлично подходит для поиска «тяжёлых» файлов.

🟠 **Сортировка по размеру:**
`du -h /path/to/folder | sort -h
➡️ Самые большие файлы окажутся внизу списка.

===========================
**Быстрое удаление больших файлов в Linux**  

Когда на диске заканчивается место, полезно быстро находить и удалять самые "тяжелые" файлы. В Linux это можно сделать несколькими способами.

**🟢 Найти файлы больше 1ГБ:**
find / -type f -size +1G 2>/dev/null
Отобразит файлы больше 1ГБ во всей системе.

**🟢 Найти и удалить файлы больше 500МБ в указанной папке:**
find /var/log -type f -size +500M -delete
Удаляет файлы в /var/log, превышающие 500МБ.

**🟢 Найти самые "тяжелые" каталоги:**
du -ah / | sort -rh | head -10
Выведет 10 самых больших файлов и папок.

🗣 **Полезно для очистки места на сервере, анализа логов и удаления ненужных файлов.**

===========================

===========================

===========================

===========================