Все интернет-хостинги имеют ограничение не только по объему размещаемых данных, но и по количеству inode (грубо говоря, файлов и папок в аккаунте). У кого-то ограничения указаны явно, у кого-то скрытые. Но есть всегда.
В связи с этим может возникнуть ситуация когда свободного места на диске вроде бы много, но попытка создать или закачать файл возвращает ошибки вида
The file’s size exceeds your account’s remaining disk usage quota. Because of this, you cannot upload this file. Delete some files, or contact your hosting provider to request an increase to your account’s quota.
Disk quota exceeded
В большинстве случаев хостер не дает инструментов для сбора статистики именно по количеству файлов и их распределению по папкам (так как сбор и вывод этой информации в реальном времени для сотен и тысяч пользователей — адски ресурсоемкая задача).
Поэтому вот несколько способов как получить информацию по распределению inode используя доступ по ssh:
Вот такой скрипт выполненный в терминале
find . -mindepth 1 -maxdepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f -o -type d | wc -l) {}"' \; | sort -rn | head -n 10
покажет top-10 папок по количеству inode внутри них относительно той папки где запущена команда. Примерно вот так
[username@server public_html]$ find . -mindepth 1 -maxdepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f -o -type d | wc -l) {}"' \; | sort -rn | head -n 10
346473 ./wp-content
2108 ./wp-includes
582 ./wp-admin
4 ./new
3 ./.well-known
Количество папок в списке можно менять заменив 5 на свое число в head -n 5
Если заменить точку после find
на путь к папке которую нужно проверить, то в списке будет выводится полный (абсолютный путь)
[username@server ~]$ find /home/username/public_html -mindepth 1 -maxdepth 1 -type d -exec sh -c 'echo "$(find "{}" -type f -o -type d | wc -l) {}"' \; | sort -rn | head -n 10
346473 /home/username/public_html/wp-content
2108 /home/username/public_html/wp-includes
582 /home/username/public_html/wp-admin
4 /home/username/public_html/new
3 /home/username/public_html/.well-known
Если нужно просто подсчитать сколько файлов и папок в текущей директории
можно поступить значительно проще выполнив
find . | wc -l
Полученное в результате число — будет общим количеством файлов и папок в директории (рекурсивно, включая все вложенные папки)
Пример:
[username@server public_html]$ find . | wc -l
348932
Аналогично в find
можно заменить точку на путь к папке которую нужно проверить.
Обычно этого достаточно чтобы найти причину проблемы.
Прокомментировать