Папка загрузок растёт - дубли картинок и лишние файлы
Место на диске кончается, а каталог не растёт. Разбираем, из чего складываются десятки гигабайтов в папке загрузок, по убыванию частоты.
С чего начать
Смотрим, что именно занимает место:
du -sh /home/bitrix/www/upload/* | sort -rh | head -10du -sh /home/bitrix/www/upload/iblock /home/bitrix/www/upload/resize_cache 2>/dev/nullfind /home/bitrix/www/upload/1c_catalog -type f | wc -l# три обычных виновника: картинки товаров, уменьшенные копии и файлы обменаРазбор начинается с раскладки по подпапкам, а не с чистки. Три обычных виновника
- картинки товаров, кэш уменьшенных копий и накопившиеся файлы обмена - лечатся совершенно по-разному.
Считаем файлы, на которые никто не ссылается:
SELECT COUNT(*), ROUND(SUM(FILE_SIZE)/1048576) AS mb FROM b_file;SELECT COUNT(*) FROM b_iblock_element_property p JOIN b_iblock_property ip ON ip.ID = p.IBLOCK_PROPERTY_ID AND ip.PROPERTY_TYPE = 'F';-- заметная разница между числами означает брошенные файлыЗаписи о файлах живут отдельно от значений свойств. Файл, отвязанный от товара, остаётся и в таблице, и на диске, поэтому чистка каталога от старых картинок места сама по себе не освобождает.
Смотрим, растут ли дубли от обмена:
ls -1 /home/bitrix/www/upload/iblock/*/ | wc -lfind /home/bitrix/www/upload/iblock -name '*.jpg' -newermt '-7 days' | wc -l# сотни новых файлов за неделю при неизменном каталоге - это дубли обмена# файлы, сохранённые своим кодом, платформа сама не удаляет никогдаСотни новых файлов за неделю при неизменном числе товаров означают дубли. Учётная система отдаёт изображения с новыми именами, сайт считает их новыми и добавляет к уже привязанным.
Причины
-
Обмен привозит картинки с новыми именами примерно 30% случаев
ПризнакПосле каждого сеанса обмена число файлов растёт, а товаров столько же.
ПроверкаСравниваем число файлов в папке за неделю с числом изменённых товаров за тот же срок.
Что делатьПравим выгрузку так, чтобы имена файлов были постоянными, и убираем накопленные дубли скриптом.
-
Файлы остаются после отвязки от товара примерно 25% случаев
ПризнакКартинки в карточках менялись много раз, а место только росло.
ПроверкаСверяем число записей о файлах с числом заполненных значений свойств типа файл.
Что делатьЗапускаем чистку неиспользуемых файлов и повторяем её по расписанию, а не разово.
-
Кэш уменьшенных копий на каждый размер примерно 20% случаев
ПризнакОтдельная папка кэша изображений сравнима по размеру с самими картинками.
ПроверкаСмотрим размер папки кэша изображений и число разных размеров в шаблонах.
Что делатьСокращаем список размеров в шаблонах и чистим кэш копий: он соберётся заново по обращениям.
-
Файлы самого обмена не убираются примерно 15% случаев
ПризнакВ папке обмена лежат файлы за все прошедшие месяцы.
ПроверкаСчитаем файлы в папке обмена и смотрим даты самых старых из них.
Что делатьЧистим папку обмена по расписанию, оставляя последние сеансы для разбора.
-
Журналы и временные файлы примерно 10% случаев
ПризнакМесто занято не картинками, а журналами модулей и служебными файлами.
ПроверкаСмотрим раскладку по подпапкам и ищем самые большие файлы в них.
Что делатьНастраиваем ротацию журналов и выключаем протоколирование, включённое когда-то для разбора.
Частые вопросы
Можно ли просто удалить папку кэша копий?
Да, она собирается заново по мере обращений. Первый заход на витрину после этого будет медленнее обычного.
Как убрать дубли картинок без потери карточек?
Скриптом, который сверяет файлы по содержимому и оставляет один. Удалять по имени наугад опасно: часть карточек останется без изображений.
Файлы обмена нужны после сеанса?
Только для разбора недавних сбоев. Хранить их месяцами смысла нет, а места они занимают заметно.
Почему чистка не освобождает место сразу?
Удаляются записи, а файлы убираются отдельным шагом. До его выполнения место остаётся занятым.
Смежное
-
Картинки при обмене - оглавление подтемы
-
Картинки товара при обмене: детальная, дополнительные, разделы - как изображения приезжают
-
Картинки товара: загрузка, размеры и вывод галереи - откуда берутся уменьшенные копии
-
Мониторинг сервера: что смотреть до того, как сайт упадёт - как заметить кончающееся место
-
Обмен с 1С и HTTP - устройство обмена целиком
-
Файлы из кода: сохранение, уменьшенные копии, удаление - кто отвечает за удаление файла
-
Файлы платформы изнутри: таблица, каталоги, копии, удаление - устройство хранилища и уменьшенных копий
-
Картинки при обмене изнутри - откуда берутся файлы-сироты и почему их не видно в карточке