Aplikacje Pytigona przechowują dane w wielu miejscach — bazie danych, uploadowanych plikach, konfiguracji. Kompleksowa strategia kopii zapasowych obejmuje wszystkie z nich.
| Komponent | Lokalizacja | Metoda |
|---|---|---|
| Baza danych (SQLite) | [DATA]/[PRJ]/[PRJ].db |
Skopiuj plik (gdy serwer zatrzymany) |
| Baza danych (PostgreSQL/MySQL) | zewnętrzny serwer bazy | pg_dump / mysqldump |
| Uploadowane pliki | przechowywanie VFS (dysk lub DB) | skopiuj katalog root VFS |
| Kod źródłowy projektu | [PRJ]/ |
repozytorium Git (zalecane) |
| Konfiguracja | settings_app.py |
repozytorium Git |
| Biblioteki z PIP | [DATA]/[PRJ]/prjlib/ |
zawarte w kopii plików |
| Skompilowane rozszerzenia | [DATA]/[PRJ]/syslib/ |
przebuduj ze źródeł |
Bazy SQLite to pojedyncze pliki — kopia to skopiowanie pliku:
# Zatrzymaj aplikację
ptig run stop
# Skopiuj bazę
cp [DATA]/[PRJ]/[PRJ].db /backup/[PRJ]_$(date +%Y%m%d).db
# Uruchom ponownie aplikację
ptig run
Dla kopii bez przestojów, użyj komendy .backup SQLite przez CLI sqlite3 lub zadania w tle wywołującego VACUUM INTO.
pg_dump -h localhost -U pytigon_user pytigon_db > /backup/pytigon_$(date +%Y%m%d).sql
Planista zadań Pytigona może zautomatyzować kopie:
async def nightly_backup(cmd):
cmd("dbbackup")
cmd("mediabackup")
def init_schedule(scheduler, cmd, http):
scheduler.add_task("daily(at='03:00')", nightly_backup, cmd)
python manage.py migrate)Regularnie weryfikuj kopie przez odtworzenie do środowiska testowego. Kopie, której nie przetestowałeś, to kopia, której nie masz.