From ae7c7fc12fc1b4a748ec3271ab39924d221f8da1 Mon Sep 17 00:00:00 2001 From: miracle091 Date: Sat, 22 May 2021 12:04:28 +0200 Subject: [PATCH] Aggiunto borgbackup --- README.md | 3 + borg_backup/README.md | 133 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 borg_backup/README.md diff --git a/README.md b/README.md index 4c57015..6c47153 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ * [watchotwer](watchtower/) - monitor per aggiornamenti * altri in arrivo, stay tuned™ +# Backup +* [borgbackup](borg_backup) - backup da terminale + # Struttura dei compose È necessario avere **conoscenza di base di linux e docker-compose** prima di usare gli esempi, ma comunque è quasi tutto semi-esplicativo e dettagliato, nel caso di problemi e/o dubbi non esitate a contattarmi in privato su [telegram](https://t.me/ghostakilla) o aprire una issue. diff --git a/borg_backup/README.md b/borg_backup/README.md new file mode 100644 index 0000000..86630c7 --- /dev/null +++ b/borg_backup/README.md @@ -0,0 +1,133 @@ +# BorgBackup in docker + +
+ +
+ +# Utilizzo + +* [Sito ufficiale](https://www.borgbackup.org/) +* [Repo (Github)](https://github.com/borgbackup/borg) + +BorgBackup è un software per effettuare backup da terminale ([e non solo](https://github.com/borgbackup/community#graphical-front-ends)): + +- [Deduplicazione](https://en.wikipedia.org/wiki/Data_deduplication) dei file invece del classico *"copia/incolla"* +- Possibilità di crittografia (AES 256-bit) e verifica dei dati (HMAC-SHA256) +- Possibilità di offuscare i dati, in modo da rendere i backup più *"sicuri"* +- Possibilità di comprimere i dati usando gli algoritmi più conosciuti (LZ4, zlib, LZMA, zstd) +- Possibilità di personalizzare il numero di backup da mantenere (giornalieri, settimanali, mensili, annuali) +- Ottimo supporto della [comnunità](https://github.com/borgbackup/community) + +# Struttura file e cartelle + +``` +/home/ +└── ~/ + ├── borg/ + │ ├── docker_backup/ + │ ├── borg_backup.sh + │ └── borg_backup.log + │ + └── docker/ + ├── container #1 + ├── container #2 + ├── ... +``` + +* `docker_backup` - cartella dove vengono salvati i backup da borg +* `borg_backup.sh` - bash script per effettuare i backup +* `borg_backup.log` - file di log con le date dei backup + +Tutti i file e le cartelle devono essere forniti a mano.
+ +# Setup + +#### Installare BorgBackup + +- Normalmente si trova già in molti [package manager](https://borgbackup.readthedocs.io/en/latest/installation.html#distribution-package) delle distro linux/unix più usate. + +#### Creare e inizializzare una nuova cartella per i backup + +- `mkdir /home/borg`
+- `borg init --encryption=none /home/borg/docker_backup` + +Notare l'assenza dell'uso del comando `sudo`. In caso di problemi con i permessi di scrittura/lettura usatelo. + +#### Bash script + +Lo script deve avere la flag **executable (eseguibile)**, nel caso lanciate il comando `chmod +x borg_backup.sh` tanto è indolore. + +`borg_backup.sh` +```bash +#!/bin/bash + +# LO SCRIPT MANTIENE IL SEGUENTE NUMERO DI BACKUP: +# GIORNALIERI = 7 aka 1 settimana +# SETTIMANALI = 4 aka 1 mese +# MENSILI = 6 aka 6 mesi +# ANNUALI = 0 + +# ----------------------------------------------- + +DIRECTORIES='/home/docker' +BACKUP='/home/borg/docker_backup' +LOGFILE='/home/borg/borg_backup.log' + +NOW=$(date +"%Y-%m-%d | %H:%M | ") +echo "$NOW - Avvio del Backup e della Pulizia" >> $LOGFILE + +# CREA NUOVI BACKUP NELLA CARTELLA IMPOSTATA +borg create \ + $BACKUP::'{now:%s}' \ + $DIRECTORIES \ + \ + --compression zstd \ + --one-file-system \ + --exclude-caches \ + --exclude-if-present '.nobackup' \ + +# CANCELLA I VECCHI BACKUP, SE NECESSARIO +borg prune -v --list $BACKUP \ + --keep-daily=7 \ + --keep-weekly=4 \ + --keep-monthly=6 \ + --keep-yearly=0 \ + +echo "$NOW Done" >> $LOGFILE +echo '------------------------------' >> $LOGFILE + +``` + +### Avvio manuale + +`sh ./borg_backup.sh` + +Vi verrà posta la seguente domanda: *Attempting to access a previously unknown unencrypted repository*, rispondete con *yes*.
+ +### Avvio automaticato + +Il metodo migliore è usare [cron](https://en.wikipedia.org/wiki/Cron). + +Create un cronjob che faccia partire lo script [alle 03:00 di notte](https://crontab.guru/#0_03_*_*_*): + +* lanciare il comando `crontab -e` +* poi scrivere quanto segue `0 3 * * * /home/borg/borg_backup.sh`
+ +Comandi utili: + +* `systemctl status cron` - controlla se il servizio è attivo e/o installato +* `crontab -l` - lista degli attuali cronjob +* `journalctl -u cron` - cronologia di cron + +# Controllare la cartella dei backup + +* entrare nella cartella dei backup `cd /home/borg/docker_backup/` +* scrivere `borg list .` per ottenere la lista dei backup effettuati +* scegliere il backup che vi interessa usando una [data epoch](https://en.wikipedia.org/wiki/Unix_time), esempio 1588986941 +* montare il backup su una cartella temporanea `borg mount .::1588986941 /mnt/temp` +* controllare il contenuto della cartella e fate quello necessario +* smontare la cartella temporanea del backup `borg umount /mnt/temp` + +# Extra + +Testare i backup effettuati insieme alla vostra procedura di ripristino. \ No newline at end of file