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. Ź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. Upewnij się, że protokół SMB (Server Message Block) jest 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.

Lukas Wojcik

Lukas Wojcik

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.

Komentarze: 2

  1. Danuta Roszak

    Skrypt jest zwięzły i sprawdzenie punktu montowania przed kopiowaniem ratuje przed najgorszym scenariuszem — zapisaniem archiwum na karcie, którą ma chronić.

    Jedno mnie zastanawia: mysqldump --all-databases zabiera również schemat mysql z kontami i uprawnieniami. Czy takie archiwum da się w ogóle odtworzyć na innym serwerze?

    1. Lukas Wojcik Autor

      Da się je wgrać, tylko rzadko jest to pożądane. Schemat mysql niesie konta, uprawnienia i wtyczki uwierzytelniania z maszyny źródłowej — po odtworzeniu na innym serwerze nadpisuje jego własne konta, łącznie z tym, którym trwa połączenie.

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

      Jest jeszcze krok, który w większości instalacji nigdy się nie wydarzył: próbne odtworzenie. Kopia, której nikt raz nie przywrócił, jest hipotezą — a jedyny moment, w którym się to weryfikuje, bywa najgorszy z możliwych. Jedno odtworzenie na maszynie testowej odpowiada na wszystkie powyższe pytania naraz.

Napisanie komentarza

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 (11) Śledź tę kategorię przez RSS

Digital Analytics

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

Digital Marketing

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

IT & Networks

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

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Śledź tę kategorię przez RSS