HBS3 - kopia zapasowa danych na serwer z systemem Debian/Ubuntu

HBS3 - kopia zapasowa danych na serwer z systemem Debian/Ubuntu

Zadanie proste - chcę wykonać kopię do zdalnej lokalizacji gdzie mam postawiony serwer z systemem Debian Buster.

Serwer źródłowy to QNAP TVS-472xt, a docelowy to Dell Wyse Dx0Q + QNAP TR-002.

W całym procesie skorzystałem z MINio jako serwer S3.

Po zalogowaniu się do SSH naszego Debiana musimy pobrać binarkę

wget https://dl.min.io/server/minio/release/linux-amd64/minio

Musimy też nadać uprawnienia do wykonywania pliku i przenieść plik w odpowiednie miejsce.

chmod +x minio
mv minio /usr/local/bin

Musimy dodać też usera na którym będzie minio pracował

useradd -r minio-user -s /sbin/nologin

Ja danę będę zapisywał do /mnt/tr002 gdzie mam zamontowany już storage, zatem trzeba ustawić właściciela. Oczywiście montowanie dodane jest w fstab dla QNAP TR-002.

chown minio-user:minio-user -R /mnt/tr002

Teraz pozostaje nam kwestia konfiguracji:

mkdir /etc/minio
chown minio-user:minio-user /etc/minio
vi /etc/default/minio

Teraz wrzucamy konfigurację do pliku:

MINIO_ACCESS_KEY="qnap"
MINIO_VOLUMES="/mnt/tr002/"
MINIO_OPTS="-C /etc/minio"
MINIO_SECRET_KEY="mojesupertajnehaslo"

Jak widać wyżej parametry trzeba sobie dopasować.

Teraz czas na systemd aby nasz s3 server uruchamiał się automatycznie.

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

Czss dopasować nasz plik o ile jest taka potrzeba:

minio.service

I zawartość:

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=minio-user
Group=minio-user

EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

Teraz przerzucamy plik w odpowiednie miejsce i uruchomić serwer:

mv minio.service /etc/systemd/system
systemctl daemon-reload
systemctl enable minio

Wynik poleceń:

Created symlink /etc/systemd/system/multi-user.target.wants/minio.service → /etc/systemd/system/minio.service.

I samo uruchomienie:

systemctl start minio

I możemy sprawdzić czy aplikacja działa poprawnie:

 systemctl status minio

wynik polecenia:

minio.service - MinIO
   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-07-20 08:41:57 CEST; 1h 26min ago
     Docs: https://docs.min.io
 Main PID: 16453 (minio)
    Tasks: 17 (limit: 3996)
   Memory: 2.6G
   CGroup: /system.slice/minio.service
           └─16453 /usr/local/bin/minio server -C /etc/minio /mnt/tr002/backup/

lip 20 08:41:58 piwnica minio[16453]: Attempting encryption of all config, IAM users and policies on MinIO backend
lip 20 08:41:59 piwnica minio[16453]: Endpoint:  http://192.168.1.135:9000  http://172.17.0.1:9000  http://127.0.0.1:9000
lip 20 08:41:59 piwnica minio[16453]: Browser Access:
lip 20 08:41:59 piwnica minio[16453]:    http://192.168.1.135:9000  http://172.17.0.1:9000  http://127.0.0.1:9000
lip 20 08:41:59 piwnica minio[16453]: Object API (Amazon S3 compatible):
lip 20 08:41:59 piwnica minio[16453]:    Go:         https://docs.min.io/docs/golang-client-quickstart-guide
lip 20 08:41:59 piwnica minio[16453]:    Java:       https://docs.min.io/docs/java-client-quickstart-guide
lip 20 08:41:59 piwnica minio[16453]:    Python:     https://docs.min.io/docs/python-client-quickstart-guide
lip 20 08:41:59 piwnica minio[16453]:    JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
lip 20 08:41:59 piwnica minio[16453]:    .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide

Teraz można już nasz storage dodać w QNAP HBS3.

Podajemy adres serwera z portem 9000 oraz wcześniej zdeklarowane parametry dostępu Access Key oraz Secret Key.