MasterpieceDockerCompose/borg/README.md

135 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Borg Backup
<div align="center">
<a href="https://asciinema.org/a/133292?autoplay=1" target="_blank"><img src="https://asciinema.org/a/133292.png" /></a>
</div>
## Utilizzo
[![Sito ufficiale](https://img.shields.io/static/v1.svg?color=555555&logoColor=ffffff&logo=firefoxbrowser&style=flat&label=&message=Homepage)](https://www.borgbackup.org/) [![Sorgente](https://img.shields.io/static/v1.svg?color=555555&logoColor=ffffff&logo=github&style=flat&label=&message=Sorgente)](https://github.com/borgbackup/borg) [![Demo](<https://img.shields.io/static/v1.svg?color=555555&logoColor=ffffff&logo=asciinema&style=flat&label=&message=Demo (Video)>)](https://asciinema.org/a/133292)
Borg Backup è un software per effettuare backup da terminale ([e non solo](https://github.com/borgbackup/community#graphical-front-ends)):
- [Deduplicazione](https://wikiless.org/wiki/Data_deduplication) dei file invece del classico _"copia/incolla"_
- Crittografia con AES 256-bit e verifica dei dati tramite HMAC-SHA256
- Offuscazione dei dati, in modo da rendere i backup più _"sicuri"_
- Compressione dei dati usando gli algoritmi più conosciuti (LZ4, zlib, LZMA, zstd)
- Personalizzazione 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
**N.B. Tutti i file e le cartelle devono essere creati a mano.**
## Setup
### Installare Borg Backup
È già presente in molte [distro linux/unix](https://borgbackup.readthedocs.io/en/latest/installation.html#distribution-package), nel caso non lo sia si può installare direttamente il [binary](https://borgbackup.readthedocs.io/en/latest/installation.html#standalone-binary)
### Creare e inizializzare una nuova cartella per i backup
1. `mkdir /home/borg`</br>
2. `borg init --encryption=none /home/borg/docker_backup`
**N.B. In caso di problemi con i permessi di scrittura/lettura usate `sudo` o l'equivalente per la vostra distro**
### Bash script
Lo script deve avere la flag **executable (eseguibile)**, nel caso non sia presente lanciate il comando `chmod +x borg_backup.sh`
`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
1. lanciate il seguente comando `sh ./borg_backup.sh`
2. alla domanda: `Attempting to access a previously unknown unencrypted repository`
3. rispondete con `yes`
### Avvio automatizzato
Il metodo migliore è usare [cron](https://wikiless.org/wiki/Cron), che sicuramente è già pre-installato nella vostra distro linux.
Create un cronjob che faccia partire lo script [alle 03:00 di notte](https://crontab.guru/#0_03_*_*_*):
1. lanciate il seguente comando `crontab -e`
2. 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
1. entrare nella cartella dei backup `cd /home/borg/docker_backup/`
2. scrivere `borg list .` per ottenere la lista dei backup effettuati
3. scegliere il backup che vi interessa usando una [data epoch](https://wikiless.org/wiki/Unix_time), esempio 1588986941
4. montare il backup su una cartella temporanea `borg mount .::1588986941 /mnt/temp`
5. controllare il contenuto della cartella e fate quello necessario
6. smontare la cartella temporanea del backup `borg umount /mnt/temp`
**N.B. Di tanto in tanto, controllate i backup effettuati per evitare brutte sorprese!!!**
---
Licenza: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt)