Дата: 2025-11-14
Проект: pirotehnika-opencart
Сервер: kondurov.beget.tech
До восстановления:
- ✅ Файлов существовало: 1,279
- ❌ Файлов отсутствовало: 90
После восстановления:
- ✅ Файлов существует: 1,363
- ❌ Файлов отсутствует: 6
- ✅ ВОССТАНОВЛЕНО: 84 ФАЙЛА!
Обнаружено:
- Товаров в БД: 5,075
- Товаров без изображения: 300 (пустое поле)
- Товаров с no_image.png: ~3,396 (стандартная заглушка)
- Товаров с битыми ссылками: 90 (файлы отсутствуют)
Найден backup:
- Файл: import_files_backup_quality85_2025-11-14.tar.gz
- Размер: 4.9 GB
- Файлов: 3,725 изображений
- Создан: 14 ноября 2025 в 06:56
Текущая структура image/:
image/
├── catalog/ # 26 MB (в основном demo)
├── cache/ # Кэш миниатюр OpenCart
├── import_files/ # 1.1 GB, 4,179 файлов (ОСНОВНОЕ ХРАНИЛИЩЕ)
│ ├── 03/
│ ├── 04/
│ ├── ...
│ └── ff/
├── payment/
└── import_files_backup_quality85_2025-11-14.tar.gz # 4.9 GB backup
Пути в БД:
- Формат: import_files/fc/fcbec4ac6efb11ee919d3cecefa69fd9_19c4898a8cba11ee919d3cecefa69fd9.png
- Структура: подпапки по первым 2 символам UUID
Процесс:
bash
tar -xzf import_files_backup_quality85_2025-11-14.tar.gz -T /tmp/missing_files.txtРезультат:
- ✅ Большинство файлов восстановлено из backup
- ❌ 6 файлов joker_JF_*.jpg отсутствуют в backup (никогда не были там)
Список:
1. import_files/joker_JF_MCP-25.jpg (дублируется 2 раза)
2. import_files/joker_JF_TS14-40.jpg
3. import_files/joker_JF_CV30-72.jpg
4. import_files/joker_JF_CV20_25_30-100_01___31_.jpg
5. import_files/joker_JF_CV20_25_30_38-138.jpg
Проблема:
- Файлы отсутствуют в backup архиве
- Не найдены в старой версии сайта (/old/)
- Вероятно были удалены или никогда не загружались
Рекомендуемые действия:
1. Найти оригинальные изображения этих товаров
2. Загрузить через админку OpenCart
3. ИЛИ Поставить placeholder:
sql
UPDATE oc_product
SET image = 'no_image.png'
WHERE image LIKE 'import_files/joker_JF_%';
Статус: Не обработано
Описание:
- 300 товаров имеют пустое поле image в БД
- Это товары, у которых изначально не было фото
- Требуется загрузка изображений вручную или через импорт
Рекомендуемые действия:
1. Экспортировать список товаров без изображений
2. Подготовить изображения для каждого товара
3. Загрузить через:
- Админку OpenCart (массовая загрузка)
- CSV импорт
- API OpenCart
SELECT COUNT(*) as total,
SUM(CASE WHEN image = '' OR image IS NULL THEN 1 ELSE 0 END) as no_image,
SUM(CASE WHEN image = 'no_image.png' THEN 1 ELSE 0 END) as placeholder
FROM oc_product;
SELECT p.product_id, p.model, pd.name, p.image
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE p.image LIKE 'import_files/joker_JF_%'
ORDER BY p.product_id;
<?php
$db = new mysqli("localhost", "kondurov_pspb", "7Dl*9Gh2", "kondurov_pspb");
$base_path = "/home/k/kondurov/pirotehnika.spb.ru/public_html/image/";
$res = $db->query("SELECT COUNT(*) as total FROM oc_product WHERE image != '' AND image != 'no_image.png'");
$row = $res->fetch_assoc();
$total = $row['total'];
$res = $db->query("SELECT image FROM oc_product WHERE image != '' AND image != 'no_image.png'");
$missing = 0;
while($row = $res->fetch_assoc()) {
if (!file_exists($base_path . $row["image"])) {
$missing++;
}
}
echo "Товаров с изображениями: $total\n";
echo "Битых ссылок: $missing\n";
echo "Исправных: " . ($total - $missing) . "\n";
sql
SELECT p.product_id, p.model, pd.name
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE p.image = '' OR p.image IS NULL;После подтверждения что всё работает:
# Переместить backup в безопасное место
mv ~/pirotehnika.spb.ru/public_html/image/import_files_backup_quality85_2025-11-14.tar.gz \
~/backups/pirotehnika/
# Освободит 4.9 GB места
import_files_backup_quality85_2025-11-14.tar.gz
- Размер: 4.9 GB
- Расположение: ~/pirotehnika.spb.ru/public_html/image/
- Содержит: 3,725 оригинальных изображений
- Статус: ✅ Сохранён
backup_security_2025-11-14/
- Размер: 42 KB
- Расположение: ~/pirotehnika.spb.ru/
- Содержит: Удалённые файлы безопасности (info.php, install.php, etc)
- Статус: ✅ Сохранён
База данных:
- Host: localhost
- Database: kondurov_pspb
- User: kondurov_pspb
- Password: 7Dl*9Gh2
- Prefix: oc_
Файловая система:
- Корень сайта: /home/k/kondurov/pirotehnika.spb.ru/public_html/
- Изображения: /home/k/kondurov/pirotehnika.spb.ru/public_html/image/
- Основное хранилище: image/import_files/ (4,179 файлов, 1.1 GB)
OpenCart:
- Версия: 3.0.3.7 (ocStore)
- Товаров: 5,075
- Структура изображений: UUID-based в подпапках по hex
06:56 - Создан backup оригинальных изображений (4.9 GB)
Время неизвестно - Произведена оптимизация/сжатие изображений (quality85)
Сейчас - Восстановлено 84 из 90 отсутствующих файлов
Отчёт создан: 2025-11-14
Автор: Claude Code Workspace
Статус: ✅ Основные задачи выполнены (93.3% success rate)