2021-11-02 11:27:39 +01:00
# Borg Backup
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
< div align = "center" >
2021-11-11 15:03:53 +01:00
< a href = "https://asciinema.org/a/133292?autoplay=1" target = "_blank" > < img src = "https://asciinema.org/a/133292.png" / > < / a >
2021-06-06 11:32:56 +02:00
< / div >
## Utilizzo
2021-11-12 15:57:16 +01:00
[![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)
2021-06-06 11:32:56 +02:00
2021-11-02 11:27:39 +01:00
Borg Backup è un software per effettuare backup da terminale ([e non solo](https://github.com/borgbackup/community#graphical-front-ends)):
2021-11-12 15:57:16 +01:00
- [Deduplicazione ](https://wikiless.org/wiki/Data_deduplication ) dei file invece del classico _"copia/incolla"_
2021-06-06 11:32:56 +02:00
- Crittografia con AES 256-bit e verifica dei dati tramite HMAC-SHA256
2021-11-12 15:57:16 +01:00
- Offuscazione dei dati, in modo da rendere i backup più _"sicuri"_
2021-06-06 11:32:56 +02:00
- 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
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
```
/home/
├── borg/
│ ├── docker_backup/
│ ├── borg_backup.sh
│ └── borg_backup.log
│
└── docker/
├── container #1
├── container #2
├── ...
```
2021-11-12 15:57:16 +01:00
- `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
2021-06-06 11:32:56 +02:00
**N.B. Tutti i file e le cartelle devono essere creati a mano.**
## Setup
2021-11-12 15:57:16 +01:00
2021-11-02 11:27:39 +01:00
### Installare Borg Backup
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
È 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
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
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
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
Lo script deve avere la flag **executable (eseguibile)** , nel caso non sia presente lanciate il comando `chmod +x borg_backup.sh`
`borg_backup.sh`
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
```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
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
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
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
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_*_*_* ):
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
1. lanciate il seguente comando `crontab -e`
2. poi scrivere quanto segue `0 3 * * * /home/borg/borg_backup.sh`
Comandi utili:
2021-11-12 15:57:16 +01:00
- `systemctl status cron` - controlla se il servizio è attivo e/o installato
- `crontab -l` - lista degli attuali cronjob
- `journalctl -u cron` - cronologia di cron
2021-06-06 11:32:56 +02:00
## Controllare la cartella dei backup
2021-11-12 15:57:16 +01:00
2021-06-06 11:32:56 +02:00
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`
2021-11-11 15:03:53 +01:00
**N.B. Di tanto in tanto, controllate i backup effettuati per evitare brutte sorprese!!!**
2021-10-27 15:08:41 +02:00
---
2021-11-12 15:57:16 +01:00
Licenza: [CC BY-SA 4.0 ](https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt )