14. Администрирование системы
Процедуры восстановления
В этом руководстве приведены подробные инструкции по восстановлению системы из резервной копии в случае возникновения проблем или потери данных.
⚠️ Важно
Прежде чем приступить к восстановлению, убедитесь, что у вас есть:
- ✓ Доступ к серверу по SSH
- ✓ Права администратора
- ✓ Рабочая резервная копия для восстановления
- ✓ Достаточно времени для завершения операции
Шаг 1: Определите резервную копию для восстановления
# Elencare tutti i backup disponibili
ls -lah /home/achille616/backups/cnc-ecommerce/
# Output esempio:
# CNC-Simulator-Italia_2025-12-18-02-00-00.zip (backup completo)
# CNC-Simulator-Italia_2025-12-18-06-00-00.zip (backup solo DB)
# CNC-Simulator-Italia_2025-12-18-12-00-00.zip (backup solo DB)
Шаг 2: Распаковать резервную копию
# Creare una cartella temporanea
mkdir -p /tmp/backup-restore
# Estrarre il backup
cd /tmp/backup-restore
unzip /home/achille616/backups/cnc-ecommerce/NOME_BACKUP.zip
Шаг 3A: Восстановление базы данных
# Il database è nel file db-dumps/*.sql o *.sql.gz
# Se è compresso:
gunzip db-dumps/mysql-*.sql.gz
# Ripristinare il database con credenziali da .env:
cd /var/www/cnc-ecommerce
mysql -u $(grep DB_USERNAME .env | cut -d '=' -f2) \
-p$(grep DB_PASSWORD .env | cut -d '=' -f2) \
$(grep DB_DATABASE .env | cut -d '=' -f2) < /tmp/backup-restore/db-dumps/mysql-*.sql
Шаг 3B: Восстановление файлов
# Ripristinare storage (uploads, file utente)
cp -r /tmp/backup-restore/storage/app/public/* /var/www/cnc-ecommerce/storage/app/public/
# Ripristinare file .env (se necessario)
# ATTENZIONE: Verificare prima le differenze!
diff /tmp/backup-restore/.env /var/www/cnc-ecommerce/.env
# Se OK:
# cp /tmp/backup-restore/.env /var/www/cnc-ecommerce/.env
Шаг 4: Проверка прав доступа
cd /var/www/cnc-ecommerce
# Ripristinare proprietà
chown -R achille616:www-data storage
chown -R achille616:www-data bootstrap/cache
# Ripristinare permessi
chmod -R 775 storage
chmod -R 775 bootstrap/cache
Шаг 5: Очистка кэша
cd /var/www/cnc-ecommerce
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear
Шаг 6: Очистка временных файлов
rm -rf /tmp/backup-restore
✅ Заключительная проверка
После восстановления убедитесь, что:
- ✓ Сайт доступен и работает
- ✓ База данных содержит правильные данные
- ✓ Загруженные файлы отображаются
- ✓ Основные функции работают корректно
Скрипт автоматического восстановления
Чтобы автоматизировать процесс восстановления, можно создать скрипт bash:
#!/bin/bash
# save as: /home/achille616/restore-backup.sh
if [ -z "$1" ]; then
echo "Uso: ./restore-backup.sh NOME_FILE_BACKUP.zip"
echo "Esempio: ./restore-backup.sh CNC-Simulator-Italia_2025-12-18-02-00-00.zip"
exit 1
fi
BACKUP_FILE="/home/achille616/backups/cnc-ecommerce/$1"
TMP_DIR="/tmp/backup-restore-$(date +%s)"
WEB_DIR="/var/www/cnc-ecommerce"
echo "🔄 Ripristino da: $BACKUP_FILE"
# Verifica esistenza backup
if [ ! -f "$BACKUP_FILE" ]; then
echo "❌ Backup non trovato: $BACKUP_FILE"
exit 1
fi
# Estrazione
echo "📦 Estrazione backup..."
mkdir -p $TMP_DIR
cd $TMP_DIR
unzip -q $BACKUP_FILE
# Ripristino database
echo "💾 Ripristino database..."
cd $WEB_DIR
DB_USER=$(grep DB_USERNAME .env | cut -d '=' -f2)
DB_PASS=$(grep DB_PASSWORD .env | cut -d '=' -f2)
DB_NAME=$(grep DB_DATABASE .env | cut -d '=' -f2)
SQL_FILE=$(find $TMP_DIR/db-dumps -name "*.sql" -o -name "*.sql.gz" | head -1)
if [[ $SQL_FILE == *.gz ]]; then
gunzip $SQL_FILE
SQL_FILE="${SQL_FILE%.gz}"
fi
mysql -u $DB_USER -p$DB_PASS $DB_NAME < $SQL_FILE
# Ripristino file storage
if [ -d "$TMP_DIR/storage/app/public" ]; then
echo "📁 Ripristino file storage..."
cp -r $TMP_DIR/storage/app/public/* $WEB_DIR/storage/app/public/
fi
# Permessi
echo "🔐 Aggiornamento permessi..."
chown -R achille616:www-data $WEB_DIR/storage
chmod -R 775 $WEB_DIR/storage
# Cache
echo "🧹 Pulizia cache..."
cd $WEB_DIR
php artisan config:clear
php artisan cache:clear
php artisan view:clear
# Cleanup
echo "🗑️ Pulizia file temporanei..."
rm -rf $TMP_DIR
echo "✅ Ripristino completato!"
Чтобы использовать скрипт:
# Rendilo eseguibile
chmod +x /home/achille616/restore-backup.sh
# Esegui il ripristino
./restore-backup.sh CNC-Simulator-Italia_2025-12-18-02-00-00.zip
Частичное восстановление (только некоторые таблицы)
Если вам нужно восстановить только определенные таблицы базы данных:
# Estrarre solo alcune tabelle
mysql -u USER -p DB_NAME -e "SELECT * FROM table_name" > table_backup.sql
# Usare mysqldump per tabelle specifiche
mysqldump -u USER -p DB_NAME table1 table2 > partial_backup.sql
💡 Совет
Регулярно тестируйте процедуру восстановления в тестовой среде, чтобы убедиться, что всё будет работать правильно, когда это понадобится.
