Kopia zapasowa Magento 2 – backup bazy danych i plików
Jak wykonywać skuteczne kopie zapasowe sklepu Magento 2 i MageOS: backup bazy MySQL, pliki media i kodu, harmonogram automatyczny oraz procedura przywracania.
Spis treści
- Co należy objąć backupem w Magento 2?
- Backup bazy danych MySQL przez CLI
- Backup plików: kod, media, konfiguracja
- Backup przez panel Magento 2
- Automatyczny harmonogram backupu
- Przywracanie sklepu z backupu
- Często zadawane pytania
Co należy objąć backupem w Magento 2?
Kopia zapasowa Magento 2 składa się z trzech elementów, które razem umożliwiają pełne przywrócenie sklepu po awarii lub ataku. Brak któregokolwiek z nich może uniemożliwić lub znacznie utrudnić odtworzenie sklepu.
- Baza danych MySQL — zawiera: zamówienia, klientów, produkty, konfigurację, treści CMS, ceny, recenzje. Jest najważniejszym elementem backupu — bez bazy sklep nie może działać
- Katalog pub/media — zdjęcia produktów, pliki do pobrania, dokumenty. Może zajmować kilkadziesiąt GB, ale zmienia się stosunkowo rzadko
- Kod aplikacji i konfiguracja — pliki PHP, moduły, szablony, plik app/etc/env.php. Przy użyciu git możesz trzymać kod w repozytorium — backup dotyczy wtedy głównie env.php z danymi dostępowymi
Backup bazy danych MySQL przez CLI
Backup bazy danych przez SSH to najszybsza i najbardziej niezawodna metoda. Dane połączenia z bazą znajdziesz w pliku app/etc/env.php (klucze: dbname, username, password, host).
Komenda: mysqldump -u [user] -p[haslo] [nazwa_bazy] --single-transaction --quick | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz. Opcja --single-transaction zapewnia spójność danych przy aktywnym sklepie (bez blokowania tabel). Opcja --quick przyspiesza dump dużych baz.
Narzędzie n98-magerun2 odczytuje dane połączenia z env.php automatycznie: n98-magerun2 db:dump --compression="gzip" backup.sql.gz. Nie trzeba podawać hasła ręcznie.
Backup na tym samym serwerze co sklep nie chroni przed awarią dysku lub ransomware. Prześlij backup do zewnętrznej lokalizacji: SFTP, rsync, Nextcloud (aiquila), AWS S3, Backblaze B2. Automatyzuj przez skrypt cron.
Backup plików: kod, media, konfiguracja
Komenda: tar -czf media_backup_$(date +%Y%m%d).tar.gz pub/media/. Katalog media może być duży (kilka–kilkadziesiąt GB). Przy synchronizacji przyrostowej używaj rsync: rsync -avz pub/media/ user@backup-server:/path/to/media/.
Plik app/etc/env.php zawiera dane połączenia z bazą danych, klucze szyfrowania i konfigurację środowiska. Backupuj go oddzielnie i przechowuj bezpiecznie (nie umieszczaj w publicznym repozytorium git!).
Jeśli używasz git do zarządzania kodem, kod Magento jest bezpieczny w repozytorium. Backupuj wtedy tylko env.php, moduły niebędące w repo i ewentualne customizacje. Backup całego katalogu: tar -czf magento_code_$(date +%Y%m%d).tar.gz --exclude=var --exclude=generated --exclude=pub/static .
Automatyczny harmonogram backupu
Ręczne wykonywanie backupów jest zawodne — łatwo o tym zapomnieć szczególnie w gorącym okresie sprzedażowym. Automatyzacja przez cron jest niezbędna dla sklepów produkcyjnych.
Przykładowy wpis cron (crontab -e) wykonujący nocny backup bazy o 2:00:
Przywracanie sklepu z backupu
Procedura przywracania sklepu Magento 2 z backupu:
Utwórz nową bazę (lub wyczyść istniejącą): mysql -u root -p -e "DROP DATABASE IF EXISTS magento_db; CREATE DATABASE magento_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;". Następnie: gunzip -c backup_20260302.sql.gz | mysql -u magento -p magento_db.
Wgraj kod na serwer (przez git lub upload), a następnie przywróć media: tar -xzf media_backup.tar.gz -C /var/www/magento/. Skopiuj env.php: cp env_backup.php app/etc/env.php.
Po przywróceniu plików i bazy: php bin/magento setup:upgrade, następnie php bin/magento setup:di:compile i php bin/magento cache:flush. Sprawdź, czy sklep działa poprawnie w przeglądarce.
Często zadawane pytania
Jak często wykonywać backup Magento 2?
Dla sklepów aktywnych (kilkadziesiąt zamówień dziennie) zaleca się: backup bazy danych codziennie (nocny), backup plików media raz w tygodniu (rzadko się zmieniają), backup kodu i konfiguracji po każdej aktualizacji lub wdrożeniu. Backupy powinny być przechowywane przez minimum 30 dni w co najmniej dwóch lokalizacjach (na serwerze i zewnętrznej).
Jak przywrócić sklep Magento 2 z backupu?
Przywracanie Magento 2 z backupu: (1) Przywróć bazę danych: mysql -u [user] -p [dbname] < backup.sql, (2) Wgraj pliki kodu na serwer, (3) Przywróć pliki media z archiwum tar.gz, (4) Sprawdź app/etc/env.php — połączenie z bazą, (5) Uruchom: php bin/magento setup:upgrade && php bin/magento cache:flush. Pełne przywrócenie zajmuje zazwyczaj 30–60 minut.
Czy SMARTX wykonuje automatyczny backup sklepu Magento 2?
Tak, wszystkie plany Magento 2 i MageOS w smartxhosting.pl obejmują automatyczny backup infrastruktury na poziomie hosta (snapshoty Proxmox). Jednak dla pełnej ochrony danych e-commerce zaleca się dodatkowy backup na poziomie aplikacji — kopię bazy danych i plików media w zewnętrznej lokalizacji. Skontaktuj się z SMARTX w sprawie dostępnych opcji backupu aplikacyjnego.
Zobacz też
Szukasz bezpiecznego hostingu z backupem dla Magento 2?
Plany Magento 2 i MageOS w smartxhosting.pl obejmują automatyczne snapshoty infrastruktury i możliwość konfiguracji backupu aplikacyjnego. Twoje dane są bezpieczne.
Sprawdź plany Magento 2