Kopie zapasową możemy przechowywać na serwerze MinIO https://min.io/, jest to serwer służący do przechowywania danych kompatybilny z Amazon S3.
Serwer można uruchomić z pliku binarnego na lokalnymsystemie lub w dockerze.
Uruchomienie serwera
Po pobraniu pliku minio
tworzymy katalog gdzie będą przechowywane dane:
mkdir data
Uruchomieni serwera
minio server data Endpoint: http://192.168.122.1:9000 http://127.0.0.1:9000 AccessKey: HWSZL5OL9X37S0DSC3EW SecretKey: d5ByBS50pffe90s9bKqWxxse4jBmEp9Zp5sv0c4c Browser Access: http://192.168.122.1:9000 http://127.0.0.1:9000 Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide $ mc config host add myminio http://192.168.122.1:9000 HWSZL5OL9X37S0DSC3EW d5ByBS50pffe90s9bKqWxxse4jBmEp9Zp5sv0c4c Object API (Amazon S3 compatible): Go: https://docs.min.io/docs/golang-client-quickstart-guide Java: https://docs.min.io/docs/java-client-quickstart-guide Python: https://docs.min.io/docs/python-client-quickstart-guide JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide .NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
W tym listingu interesują nas cztery wartości:
-
AcessKey
-
SecretKey
-
Command-line Access
-
Adres interfejsu webowego
Korzystając z klienta utworzymy bukiet, na powyszym listingu możemy znaleźć
polecenie $ mc config …
to polecenie doda serwer pod nazwą myminio
oczywiście możemy zmienić nazwę.
./mc config host add myminio http://192.168.122.1:9000 HWSZL5OL9X37S0DSC3EW d5ByBS50pffe90s9bKqWxxse4jBmEp9Zp5sv0c4c
Dodanie bukietu
./mc mb myminio/nazwabukietu
Skrypt do obsługi kopii zapasowych wykonywanych przez Restic
#!/bin/bash
# Dostęp do serwera MinIO.
export AWS_ACCESS_KEY_ID=HWSZL5OL9X37S0DSC3EW
export AWS_SECRET_ACCESS_KEY=d5ByBS50pffe90s9bKqWxxse4jBmEp9Zp5sv0c4c
# Dostęp do serwera MinIO + integracja z programem pass
# export AWS_ACCESS_KEY_ID=$(pass show restic/x230/key)
# export AWS_SECRET_ACCESS_KEY=$(pass show restic/x230/access)
# Integracja restic i pass dostęp do haseł.
export RESTIC_PASSWORD_COMMAND='pass show restic/x230'
# Adres repozytorium.
REPO="s3:http://192.168.122.1:9000/backup-x230"
RESTORE_DIR=$HOME/restic/restore
MOUNT_DIR=$HOME/restic/mount
FILES=$HOME/restic/files.txt
init() {
restic -r $REPO init
}
backup() {
restic -r $REPO backup --files-from $FILES
}
snapshots() {
restic -r $REPO snapshots --cleanup-cache -c
}
restore() {
if [ -z "$1" ]; then
read -p "Brak ID migawki, wyświetlić listę? [T/n]: " SNAPSHOT
case $SNAPSHOT in
t|T)
snapshots
;;
n|N)
exit
;;
*)
snapshots
;;
esac
else
restic -r $REPO restore $1 \
--target $RESTORE_DIR
fi
}
restore-latest() {
restic -r $REPO restore -v latest \
--target $RESTORE_DIR
}
mount() {
restic -r $REPO mount $MOUNT_DIR
}
pomoc() {
echo
echo "------------------------------------------------------"
echo "| init - inicjuje repozytorium |"
echo "| backup - wykonanie kopii zapasowej |"
echo "| snapshots - lista backupów |"
echo "| restore - odtworzenie konkretnego snapshota |"
echo "| restore-latest - odtwarza ostatni snapshot |"
echo "| mount - podmontowuje repozytorium |"
echo "| help - wyświetla pomoc |"
echo "------------------------------------------------------"
echo
}
case $1 in
init)
init
;;
backup)
backup
;;
snapshots)
snapshots
;;
restore)
restore $2
;;
restore-latest)
restore-latest
;;
mount)
mount
;;
help|pomoc)
pomoc
;;
*)
pomoc
;;
esac
Date: 2020-10-22T01:24:15+02:00 |