Aggiunto borgbackup
This commit is contained in:
parent
02fd70ce41
commit
ae7c7fc12f
|
@ -12,6 +12,9 @@
|
|||
* <img src="https://raw.githubusercontent.com/containrrr/watchtower/main/logo.png" width="28" /> [watchotwer](watchtower/) - monitor per aggiornamenti
|
||||
* altri in arrivo, stay tuned™
|
||||
|
||||
# Backup
|
||||
* <img src="https://i.ibb.co/cTFLQSr/borg.png" width="28" /> [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.
|
||||
|
|
|
@ -0,0 +1,133 @@
|
|||
# BorgBackup in docker
|
||||
|
||||
<div align="center">
|
||||
<a href="https://asciinema.org/a/133292" target="_blank"><img src="https://asciinema.org/a/133292.svg" /></a>
|
||||
</div>
|
||||
|
||||
# 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.</br>
|
||||
|
||||
# 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`</br>
|
||||
- `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*.</br>
|
||||
|
||||
### 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`</br>
|
||||
|
||||
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.
|
Loading…
Reference in New Issue