Script pentru automatizarea backup-ului la HomeLab / Server
Find a file
2026-03-19 15:17:12 +00:00
backup.sh Actualizare 2026-03-19 15:17:12 +00:00
README.md Actualizare informații 2026-03-19 15:09:44 +00:00

backup-server

Script pentru backup automat al serviciilor Docker de pe server (Intel NUC).

Auto-detectează servicii, volume Docker și baze de date PostgreSQL - fără configurare manuală la adăugarea unui serviciu nou.

Ce face

  1. Copiază configurațiile Docker Compose și fișierele .env din /opt/services/
  2. Detectează automat toate volumele (named volumes și bind mounts) prin docker inspect
  3. Face pg_dump la toate containerele PostgreSQL găsite active
  4. Exportă documentele din Paperless-ngx prin document_exporter
  5. Arhivează totul într-un .tar.gz
  6. Criptează arhiva cu GPG
  7. Uploadează în cloud prin rclone
  8. Șterge arhiva locală după upload reușit
  9. Rotează arhivele vechi din cloud (păstrează ultimele N)

Dependențe

sudo apt install gpg rclone

Docker trebuie să fie deja instalat și rulând.

Configurare

Editează secțiunea CONFIGURARE din backup.sh:

GPG_RECIPIENT="email@example.com"   # emailul cheii GPG
RCLONE_REMOTE="mega:backups/server" # destinația rclone
KEEP_BACKUPS=4                      # câte backup-uri să păstrezi în cloud
NOTIFY_EMAIL=""                     # email notificări (opțional)

GPG

Dacă nu ai o cheie GPG:

gpg --full-generate-key

Exportă cheia publică (pentru import pe alte mașini dacă e nevoie):

gpg --export --armor email@example.com > cheie-publica.asc

rclone

Configurează remote-ul dorit (Mega, Backblaze B2, Google Drive etc.):

rclone config

Instalare

# Clonează repo-ul
git clone https://code.linuxromania.ro/thinkroot/backup-server.git
cd backup-server

# Fă scriptul executabil
chmod +x backup.sh

# Copiază în /usr/local/bin
sudo cp backup.sh /usr/local/bin/backup.sh

Rulare manuală

sudo backup.sh

Log-ul se scrie în /var/log/backup.log.

Automatizare cu cron

sudo crontab -e

Adaugă (exemplu: în fiecare duminică la 03:00):

0 3 * * 0 /usr/local/bin/backup.sh

Restaurare

  1. Descarcă arhiva din cloud cu rclone
  2. Decriptează:
    gpg --decrypt server_YYYY-MM-DD_HHMM.tar.gz.gpg > server.tar.gz
    
  3. Extrage:
    tar -xzf server.tar.gz
    
  4. Conținutul arhivei:
    • compose-configs/ - fișierele docker-compose și .env ale serviciilor
    • volumes/ - named volumes Docker
    • bind-mounts/ - bind mounts din /opt/services/
    • postgresql/ - dump-uri SQL pentru fiecare bază de date
    • MANIFEST.txt - lista serviciilor și containerelor active la momentul backup-ului

Structură repo

backup-server/
└── backup.sh   # scriptul principal
└── README.md