Где мое дисковое пространство?

458
dustin.b

Недавно мое дисковое пространство достигло отметки 98%, и я попытался выяснить причину этого. Моя система состоит из двух дисков: ssd / dev / sda и хранилища hdd / dev / sdb.

Мой Linux установлен /dev/sda2и на нем осталось 98% дискового пространства, а жесткий диск смонтирован /home. Я пытался найти размер файла в / с

du -h --max-depth=1 /  260M /root 0 /proc 8,0K /storageImage 598M /opt 12K /srv 0 /sys 84K /dev 8,4G /usr 35M /boot 236G /run  12K /mnt  4,0K /media  12K /tmp  279G /home  17M /etc  642M /var  16K /lost+found  524G / 524G insgesamt 

Только /usrимеет значительный размер ~ 9G. Я использую arch (systemd), поэтому там находится огромная папка / media -> /run/media.

Но dfпоказывает мне это:

df Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/sda2 58G 54G 1,2G 98% / dev 7,8G 0 7,8G 0% /dev run 7,8G 796K 7,8G 1% /run tmpfs 7,8G 32M 7,8G 1% /dev/shm tmpfs 7,8G 0 7,8G 0% /sys/fs/cgroup tmpfs 7,8G 24K 7,8G 1% /tmp /dev/sdb1 362G 236G 108G 69% /home/dustin/opt tmpfs 1,6G 8,0K 1,6G 1% /run/user/1000 

Где мое дисковое пространство?

Изменить: Спасибо за подсказку на Баобаб. Другая система, но аналогичная конфигурация

baobab

Как можно видеть, есть 12G для /usrи 4G на /varэту сумму до 16G, но duговорит 49G.

df Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/sda6 64G 49G 12G 81% / dev 3,9G 0 3,9G 0% /dev run 3,9G 996K 3,9G 1% /run tmpfs 3,9G 143M 3,7G 4% /dev/shm tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup tmpfs 3,9G 1,1M 3,9G 1% /tmp /dev/sdb2 1,1T 716G 284G 72% /home/naikon/opt tmpfs 784M 20K 784M 1% /run/user/1000 

Что потребляет те 33 ГБ дискового пространства, которые не найдены баобабом oder df? Я не могу использовать команду "найти", как предложено. Вкл / экран забит предупреждениями.

0

2 ответа на вопрос

1
Jan

Самый простой способ узнать это будет:

Командная строка

Чтобы найти 10 самых больших файлов (linux / bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Чтобы найти 10 крупнейших каталогов:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Разница только в том -type .

Источник для командной строки

0
Hannu

Немного упрощено ... Начиная с ./(замените, /чтобы получить самые большие файлы системы)

find ./ -type f> FILES -printf "% 016s% p \ n"; сортировать -rn ФАЙЛЫ | голова -n 50 

или если вы не хотите, чтобы список FILESзадерживался ... тогда:

find ./ -type f -printf "% 016s% p \ n" | сортировать -rn | голова -n 50 
Похоже, `> ФАЙЛЫ` принадлежит в другом месте? Volker Siegel 9 лет назад 0
Зависит. Если вы хотите более подробно изучить список файлов (FILES), то вышесказанное вполне подойдет. Hannu 9 лет назад 0
Я старался. Действительно, он ведет себя как обычный перенаправление в конце строки - не так ли? Запутался ... Как / почему возможно иметь перенаправление в командной строке между аргументами; и каково преимущество перед перенаправлением в конце строки? (Я предполагаю, что `> FILE` не обрабатывается` find`, верно?) Volker Siegel 9 лет назад 0
На самом деле, это хорошие вопросы для публикации; Итак, дайте мне знать, полностью ли я ... Volker Siegel 9 лет назад 0
В первой версии `;` заставляет вещи работать так, как будто вы ввели две строки с `Enter` на каждой. Hannu 9 лет назад 0
... и действительно, перенаправление файлов устанавливается оболочкой, `>`, за которым следует имя файла (или имя устройства), приводит к нормальной печати. www.tldp.org имеет несколько руководств по программированию на bash; проверить это. Hannu 9 лет назад 0
Все, что вы говорите, правда и совершенно нормально. Что меня смущает, так это то, что `-printf"% 016s% p \ n "` после перенаправления является аргументом командной строки `find`, и он используется find, поскольку влияет на вывод в` FILE`. Это не уровень оболочки `printf`, это находка` -printf`. Странный. Volker Siegel 9 лет назад 0
`man find` - чтобы увидеть, что" find "принимает в качестве аргументов,` -printf` является одним из вариантов. Строка в кавычках после -printf указывает, что и как должно быть напечатано. `%` начинается с определения параметра, `0` = начальные нули,` 16` символов в ширину, `s` размер в байтах,`% p` = путь в «нормальной форме» (без трюков), `\ n` перевод строки - который не является автоматическим. Hannu 9 лет назад 0
Конечно, я знаю `-printf` из find довольно хорошо, также` printf` как buildin для оболочки и как `/ usr / bin / printf`. Дело в том, что это ** после ** перенаправления, и я предполагал, что перенаправление завершит список аргументов командной строки. До следующей строки или следующего `;`. Volker Siegel 9 лет назад 0
Я сделал минимальный тест с `echo`. Это действительно работает, чтобы перенаправление перемежалось с аргументами. Я ** ооо ** этого не ожидал ... Но доказательства это очень прямые: `$ echo ab> f1 cde`` $ cat f1` `abcde` Volker Siegel 9 лет назад 0

Похожие вопросы