LW IT Solutions
«« Blog Overview « IT & Networks
This post in other languages:

Zabezpieczanie danych: Automatyczne kopie zapasowe Raspberry Pi na serwerze Ubiquiti UNAS Pro

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.

  1. Zaloguj się do konsoli UniFi OS i otwórz aplikację Storage / NAS.
  2. Utwórz nowy folder współdzielony (np. Pi_Backups).
  3. Utwórz dedykowanego użytkownika lokalnego (np. backup_user) z silnym hasłem.
  4. Przypisz 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. Zainstaluj niezbędne narzędzia: sudo apt update oraz sudo apt install cifs-utils.
  3. Utwórz punkt montowania: sudo mkdir -p /mnt/unas_backup.
  4. Utwórz ukryty plik z poświadczeniami w /etc/.unas_creds (zawierający: username=..., password=..., domain=WORKGROUP). Zabezpiecz go: 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. Przetestuj 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. Utwórz plik konfiguracyjny: nano ~/.my.cnf.
  2. Dodaj: [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. Utwórz plik ~/pi_backup.sh i wklej kod:

Bash

#!/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. Ustaw uprawnienia wykonywania: chmod +x ~/pi_backup.sh.

Krok 5: Automatyzacja za pomocą Crona

Harmonogram uruchamiania skryptu codziennie o 2:00 w nocy.

  1. Otwórz crontab: crontab -e.
  2. Dodaj linię: 0 2 * * * /home/pi/pi_backup.sh > /home/pi/backup_log.txt 2>&1.

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

ALL ARTICLES & CATEGORIES

CCTV

Data Privacy

Digital Analytics

Digital Marketing

IT & Networks

Smart Home