Привет, сегодня хочу рассказать о том, как же, все-таки, из консоли или по удаленке через ssh узнать размер папок или файлов linux.
Именно с такой задачей столкнулся, когда нужно было посмотреть, кто же больше всех занимает места в корпоративном файлхранилище.
Данная операция может быть ресурсоёмкой при большом количестве файлов и в этом нам поможет замечательная команда du.
Смотрим размер моей рабочей папки на диске home:
sisadmin@sisadmin-linux /home $ ls
lost+found sisadmin
sisadmin@sisadmin-linux /home $ du -sh sisadmin/
1,6G sisadmin/
Если набрать просто du или du -h, то на терменал выведутся рамеры всех вложенных папок и файлов. Так что так лучше не делать.
Если нужно узнать размеры всего содержимого в каталоге, тогда заходим в него и выполняем следующую команду:
sisadmin@sisadmin-linux /home $ cd sisadmin/
sisadmin@sisadmin-linux ~ $ du -sh *
12K 1
4,0K 1.py
4,0K komunalka.py
4,0K raschot2.py
4,0K raschot.py
228K screenshot_2721199507.png
232K screenshot_2721200622.png
4,0K stroki.py
4,0K tellbook.py
0 tellbook.txt
4,0K test.py
736K VirtualBox VMs
4,0K Видео
4,0K Документы
112M Загрузки
13M Изображения
4,0K Музыка
4,0K Общедоступные
87M Рабочий стол
4,0K Снимки виртуальных машин.docx
4,0K Шаблоны
Самвол * означает, что нужно выбрать все файлы в папке.
Сортируем папки по размеру:
du -s *| sort -nr — Покажет все файлы в килобайтах и отсортирует от большего к меньшему.
du -sm *| sort -nr -Покажет все файлы в мегабайтах и отсортирует от большего к меньшему.
sisadmin@sisadmin-linux ~ $ du -s *| sort -nr
114492 Загрузки
89036 Рабочий стол
12476 Изображения
736 VirtualBox VMs
232 screenshot_2721200622.png
228 screenshot_2721199507.png
12 1
4 Шаблоны
4 Снимки виртуальных машин.docx
4 Общедоступные
4 Музыка
4 Документы
4 Видео
4 test.py
4 tellbook.py
4 stroki.py
4 raschot.py
4 raschot2.py
4 komunalka.py
4 1.py
0 tellbook.txt
sisadmin@sisadmin-linux ~ $ du -sm *| sort -nr
112 Загрузки
87 Рабочий стол
13 Изображения
1 Шаблоны
1 Снимки виртуальных машин.docx
1 Общедоступные
1 Музыка
1 Документы
1 Видео
1 VirtualBox VMs
1 test.py
1 tellbook.py
1 stroki.py
1 screenshot_2721200622.png
1 screenshot_2721199507.png
1 raschot.py
1 raschot2.py
1 komunalka.py
1 1.py
1 1
0 tellbook.txt
du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done — А данная кострукция поможет отсортировать файлы от большего к меньшему и прописать размеры в мегабайтах и килобайтах:
sisadmin@sisadmin-linux ~ $ du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done
112M Загрузки
du: невозможно получить доступ к «Рабочий»: Нет такого файла или каталога
du: невозможно получить доступ к «стол»: Нет такого файла или каталога
13M Изображения
du: невозможно получить доступ к «VirtualBox»: Нет такого файла или каталога
du: невозможно получить доступ к «VMs»: Нет такого файла или каталога
232K screenshot_2721200622.png
228K screenshot_2721199507.png
12K 1
4,0K Шаблоны
du: невозможно получить доступ к «Снимки»: Нет такого файла или каталога
du: невозможно получить доступ к «виртуальных»: Нет такого файла или каталога
du: невозможно получить доступ к «машин.docx»: Нет такого файла или каталога
4,0K Общедоступные
4,0K Музыка
4,0K Документы
4,0K Видео
4,0K test.py
4,0K tellbook.py
4,0K stroki.py
4,0K raschot.py
4,0K raschot2.py
4,0K komunalka.py
4,0K 1.py
0 tellbook.txt
+++
Например команда ls -l -S выведет содержимое директория в отсортированном виде от большего к меньшему по размеру и имени (вместе с директориями и размером содержимого). Так же есть общий размер текущей директории и входящих в неё.
Дополним параметром -h и размер будет показан как в байтах, Кбайтах и Мбайтах, если таковые имеются. ls -l -S -h
Ну а если добавить еще параметр -R тогда будет подробно покеазан каждый поддиректорий начиная с текущего. ls -l -S -h -R
Есть и такой способ:
du -h —max-depth=1
Удобнее -s тем, что общий размер так же выводит.
Так же можно с сортировкой выводить