Backups mit Restic gegen den lokalen S3 Server Minio
Seit einiger Zeit ist restic mein Backupwerkzeug der Wahl. Jede Nacht “wacht” der Backup Server auf und zieht ein Backup von den relevante Servern. Das funktioniert auch gut nur leider kann ich damit nicht das gelegentliche manuelle Backup von Workstations implementieren. Hier ist eher ein Backup nach dem Push Prinzip auf “Abruf” notwendig. Durch diesen exzellenten Beitrag motiviert habe ich mir minio genauer angeschaut und werde damit erst einmal weiter machen. Hier die Dokumentation meiner Schritte
1. Installation Go und minio
mkdir golang
cd golang/
wget https://dl.google.com/go/go1.10.linux-386.tar.gz
tar -C /usr/local -xzf go1.10.linux-386.tar.gz
export PATH=$PATH:/usr/local/go/bin
go get -u github.com/minio/minio
mv /root/go/bin/minio /usr/local/bin/
2. Start des Dienstes auf dem Server
minio server /backup3/minio-hbauer/
Created minio configuration file successfully at /root/.minio
Drive Capacity: 1.3 TiB Free, 1.7 TiB Total
Endpoint: http://192.xxx.yyy.zz:9000 http://127.0.0.1:9000
AccessKey: 7QWExxxxxxxxxxxxxxxxI
SecretKey: /LOnyyyyyyyyyyyyyyyyyyyyyyyyyyy8tcccc
Browser Access:
http://192.xxx.yyy.zzz:9000 http://127.0.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://192.xxx.yyyy.zzz:9000 77QWExxxxxxxxxxxxxxxxI /LOnyyyyyyyyyyyyyyyyyyyyyyyyyyy8tcccc
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
.NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
Mit dem Browser kann man sich jetzt anmelden.
3. Einrichten des Repositories.
Ich verwende dieses von JP Mens empfohlen Tool auf dem Client.
wget https://raw.githubusercontent.com/binarybucks/restic-tools/master/bin/backup
mv backup restic-minio-backup.sh
chmod +x restic-minio-backup.sh
das noch konfiguriert werden muss
sudo mkdir /etc/backup
cd /etc/backup
vi local.config
BACKUP_HOSTNAME="myclient"
BACKUP_DIR="/home/hbauer/Dokumente/"
BACKUP_ARGS="--tag filesystem"
# HEALTHCHECK_URL="<URL from https://healthchecks.io/checks/ to notify>
vi /etc/backup/firsttest.repo
RESTIC_REPOSITORY="s3:http://192.xxx.yyy.zzz:9000/first-test"
AWS_ACCESS_KEY_ID="77QWExxxxxxxxxxxxxxxxI "
AWS_SECRET_ACCESS_KEY="/LOnyyyyyyyyyyyyyyyyyyyyyyyyyyy8tcccc"
RESTIC_PASSWORD='verygeheim'
Und nun der erste Start. Erstelle ein neues restic Repository
./restic-minio-backup.sh firsttest init
created restic backend 4271f8a2f7 at s3:http://192.xxx.yyy.zzz:9000/first-test
....
....
Erstelle ein Backup der in local.config definierten Daten
./restic-minio-backup.sh firsttest local
scan [/home/hbauer/Dokumente]
scanned 21 directories, 160 files in 0:00
[0:08] 100.00% 10.816 MiB/s 86.528 MiB / 86.528 MiB 181 / 181 items 0 errors ETA 0:00
duration: 0:08, 10.25MiB/s
snapshot 3a38485c saved
Soweit so gut. Jetzt mal einen kompletten Durchlauf.
Erstelle ein Dokument im Datenpfad, Sicherung durchführen, Dokument löschen und Daten wieder herstellen
echo first-test > /home/hbauer/Dokumente/minio-restic-test
./restic-minio-backup.sh firsttest local
using parent snapshot 3a38485c
scan [/home/hbauer/Dokumente]
scanned 21 directories, 161 files in 0:00
[0:01] 100.00% 86.528 MiB/s 86.528 MiB / 86.528 MiB 182 / 182 items 0 errors ......
snapshot a868b7d5 saved
rm /home/hbauer/Dokumente/minio-restic-test
./restic-minio-backup.sh firsttest restore a868b7d5 --target restic-restore/
password is correct
restoring <Snapshot a868b7d5 of [/home/hbauer/Dokumente] at 2018-03-04 07:21:16.86621425 +0100 CET by root@pedro> to restic-restore/
more restic-restore/Dokumente/minio-restic-test
first-test
So, die ersten Test scheinen gut gelaufen zu sein. Jetzt das ganze produktiv nehmen.
4. Autostart des minio Servers
gemäß dieser Beschreibung
vi /etc/default/minio
more /etc/default/minio
# Local export path.
MINIO_VOLUMES="/backup3/minio-hbauer/"
# Use if you want to run Minio on a custom port.
#MINIO_OPTS="--address :9199"
Service beim Start hochfahren
cd /etc/systemd/system/
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
systemctl enable minio.service
systemctl daemon-reload
systemctl start minio.service
5. Next Steps
Einiges ist noch offen:
- ein Setup für verschiedene Benutzer
- NGinx Proxy mit TLS
aber die ersten Backups können von meiner Workstation in einem separaten VLAN schon mal laufen