# Borg Backup
## 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://asciinema.org/a/133292) ![RPI Friendly]() 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`
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)