Script pentru automatizarea backup-ului la HomeLab / Server
- Shell 100%
| backup.sh | ||
| README.md | ||
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
- Copiază configurațiile Docker Compose și fișierele
.envdin/opt/services/ - Detectează automat toate volumele (named volumes și bind mounts) prin
docker inspect - Face
pg_dumpla toate containerele PostgreSQL găsite active - Exportă documentele din Paperless-ngx prin
document_exporter - Arhivează totul într-un
.tar.gz - Criptează arhiva cu GPG
- Uploadează în cloud prin rclone
- Șterge arhiva locală după upload reușit
- 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
- Descarcă arhiva din cloud cu rclone
- Decriptează:
gpg --decrypt server_YYYY-MM-DD_HHMM.tar.gz.gpg > server.tar.gz - Extrage:
tar -xzf server.tar.gz - Conținutul arhivei:
compose-configs/- fișierele docker-compose și .env ale serviciilorvolumes/- named volumes Dockerbind-mounts/- bind mounts din/opt/services/postgresql/- dump-uri SQL pentru fiecare bază de dateMANIFEST.txt- lista serviciilor și containerelor active la momentul backup-ului
Structură repo
backup-server/
└── backup.sh # scriptul principal
└── README.md