LW IT Solutions
« Blog Overview /IT & Networks / Jak automatyzować kopie zapasowe Raspberry Pi na...
This post in other languages:

Jak automatyzować kopie zapasowe Raspberry Pi na UniFi NAS

Jak automatyzować kopie zapasowe Raspberry Pi na UniFi NAS
Spis treści
  1. Krok 1: Przygotowanie serwera UNAS Pro
  2. Krok 2: Montowanie zasobu UNAS Pro w Raspberry Pi
  3. Krok 3: Zabezpieczenie poświadczeń MySQL
  4. Krok 4: Skrypt kopii zapasowej
  5. Krok 5: Automatyzacja za pomocą Crona
  6. Pytania i odpowiedzi
  7. Źródła

Utrzymywanie usług self-hosted, automatyki domowej lub aplikacji webowych na Raspberry Pi wiąże się z jednym kluczowym wyzwaniem: podatnością kart microSD. Są one narażone na uszkodzenia, szczególnie przy intensywnych cyklach odczytu i zapisu baz danych. Aby zbudować naprawdę odporną architekturę, dane nie mogą znajdować się wyłącznie na samym urządzeniu Pi. Należy przenosić je na redundatne rozwiązanie klasy korporacyjnej. Poniżej przedstawiono proces konfiguracji w pełni zautomatyzowanej, codziennej kopii zapasowej z Raspberry Pi bezpośrednio na serwer Ubiquiti UNAS Pro, obejmujący zrzut baz danych (mysqldump) oraz kompresję plików.

Krok 1: Przygotowanie serwera UNAS Pro

Serwer musi być gotowy na przyjęcie danych.

Diagram do artykułu: Przygotowanie serwera UNAS Pro, Montowanie zasobu UNAS Pro w Raspberry Pi, Zabezpieczenie poświadczeń MySQL …
Przebieg z artykułu w 5 krokach: Przygotowanie serwera UNAS Pro, Montowanie zasobu UNAS Pro w Raspberry Pi, Zabezpieczenie poświadczeń MySQL, Skrypt kopii zapasowej ….
  1. Zalogować się do konsoli UniFi OS i otworzyć aplikację Storage / NAS.
  2. Utworzyć nowy folder współdzielony (np. Pi_Backups).
  3. Utworzyć dedykowanego użytkownika lokalnego (np. backup_user) z silnym hasłem.
  4. Przypisać temu użytkownikowi uprawnienia odczytu i zapisu (Read/Write) do folderu Pi_Backups.
  5. Protokół SMB (Server Message Block) musi być włączony dla tego udziału.

Krok 2: Montowanie zasobu UNAS Pro w Raspberry Pi

Raspberry Pi powinno traktować zasób sieciowy jak lokalny dysk fizyczny, co osiąga się za pomocą cifs-utils.

  1. Połącz się przez SSH z Raspberry Pi.
  2. Zainstalować niezbędne narzędzia: sudo apt update oraz sudo apt install cifs-utils.
  3. Utworzyć punkt montowania: sudo mkdir -p /mnt/unas_backup.
  4. Utworzyć ukryty plik z poświadczeniami w /etc/.unas_creds (zawierający: username=..., password=..., domain=WORKGROUP). Zabezpieczyć go poleceniem: sudo chmod 600 /etc/.unas_creds.
  5. Edytuj plik /etc/fstab, dodając linię: //192.168.1.XXX/Pi_Backups /mnt/unas_backup cifs credentials=/etc/.unas_creds,uid=1000,gid=1000,iocharset=utf8 0 0.
  6. Przetestować montowanie: sudo mount -a.

Krok 3: Zabezpieczenie poświadczeń MySQL

Aby umożliwić skryptowi wykonanie mysqldump bez wpisywania hasła, należy je bezpiecznie zapisać.

  1. Utworzyć plik konfiguracyjny: nano ~/.my.cnf.
  2. Dodać: [client], user=root, password=YourDatabasePassword.
  3. Zabezpiecz plik: chmod 600 ~/.my.cnf.

Krok 4: Skrypt kopii zapasowej

Skrypt wykonuje zrzut bazy, kompresję folderów i usuwanie starych archiwów.

  1. Utworzyć plik ~/pi_backup.sh i wkleić kod:
#!/bin/bash
BACKUP_DATE=$(date +"%Y-%m-%d")
NAS_MOUNT="/mnt/unas_backup"
DEST_DIR="$NAS_MOUNT/$BACKUP_DATE"
TARGET_FOLDERS="/var/www/html /etc/nginx /home/pi/docker-data"

if ! mountpoint -q $NAS_MOUNT; then exit 1; fi
mkdir -p "$DEST_DIR"
mysqldump --all-databases | gzip > "$DEST_DIR/db_backup_$BACKUP_DATE.sql.gz"
tar -czf "$DEST_DIR/files_backup_$BACKUP_DATE.tar.gz" $TARGET_FOLDERS
find "$NAS_MOUNT" -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;
  1. Ustawić uprawnienia wykonywania: chmod +x ~/pi_backup.sh.

Krok 5: Automatyzacja za pomocą Crona

Harmonogram uruchamiania skryptu codziennie o 2:00 w nocy.

  1. Otworzyć crontab: crontab -e.
  2. Dodać linię: 0 2 * * * $HOME/pi_backup.sh > $HOME/backup_log.txt 2>&1.

Rezultatem jest zautomatyzowany plan odtwarzania po awarii: co noc bazy danych są eksportowane, pliki konfiguracyjne oraz katalogi aplikacji kompresowane i przesyłane przez sieć na serwer Ubiquiti UNAS Pro, a archiwa starsze niż dwa tygodnie są automatycznie usuwane.

Pytania i odpowiedzi

Czy archiwum z mysqldump –all-databases, które obejmuje też schemat mysql z kontami, da się odtworzyć na innym serwerze?

Da się, tylko wgranie schematu mysql rzadko jest pożądane. Ten schemat niesie konta, uprawnienia i wtyczki uwierzytelniania z maszyny źródłowej, więc po odtworzeniu na innym serwerze nadpisuje jego własne konta, łącznie z tym, przez które trwa połączenie.

Dla przenośności lepszy jest jawny zestaw baz: --databases app1 app2 zamiast --all-databases. Archiwum staje się mniejsze, a odtworzenie w mniejszym stopniu zależy od wersji serwera i sposobu uwierzytelniania. Konta i uprawnienia warto zrzucać osobno i traktować jako element konfiguracji, a nie danych.

Jest jeszcze krok, który w wielu instalacjach nigdy się nie odbył: próbne odtworzenie. Kopia, której nikt ani razu nie przywrócił, pozostaje hipotezą, a bez próby weryfikacja przychodzi dopiero po awarii, czyli w najgorszym możliwym momencie. Jedno odtworzenie na maszynie testowej odpowiada na wszystkie powyższe pytania naraz.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Doświadczenia z innym sprzętem lub inną wersją oprogramowania oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (16) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (12) Śledź tę kategorię przez RSS