−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS

Jak robić kopie zapasowe VPS przez restic (szyfrowane, poza serwerem)

Szyfrowane i deduplikowane kopie VPS z restic: repozytorium na storage zgodnym z S3 lub innym serwerze, timer systemd, retencja i test przywracania.

Każdy ma kopie zapasowe, dopóki nie spróbuje którejś przywrócić. Folder okazuje się pusty, cron padł w marcu albo archiwum leży na tym samym dysku, który właśnie się zepsuł. restic naprawia większość z tego: szyfruje po twojej stronie, każdy kawałek danych zapisuje raz, a przywrócenie jednego pliku jest tak proste jak kopia całego serwera.

Oto konfiguracja, której naprawdę byśmy zaufali, na Ubuntu lub Debianie.

1. Zainstaluj restic

apt update && apt install -y restic
restic self-update

Pakiety z dystrybucji są w tyle; self-update pobiera aktualne wydanie.

2. Wybierz miejsce na repozytorium

Repozytorium nie może leżeć na serwerze, który chronisz. Dwa typowe wybory:

3. Zapisz dane dostępowe

Trzymaj wszystko w jednym pliku dostępnym tylko dla roota, żeby timer i twoja powłoka używały tych samych ustawień:

cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass

Teraz skopiuj zawartość /root/.restic-pass do menedżera haseł. Bez niej kopii nie da się odszyfrować — ani tobie, ani nikomu innemu.

4. Zainicjuj repozytorium i zrób pierwszą kopię

source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
  --exclude-caches --exclude '/root/.cache'
restic snapshots

Dopasuj ścieżki do miejsc, gdzie naprawdę są twoje dane. Wolumeny Dockera leżą w /var/lib/docker/volumes; dane aplikacji często w /srv lub /opt.

5. Bazy danych: najpierw zrzut, potem kopia

Nie kopiuj surowych plików działającej bazy. Zrób zrzut tuż przed kopią:

mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump

Dodaj /var/backups/db do ścieżek kopii. Więcej o zrzutach jest w naszym poradniku PostgreSQL.

6. Zaplanuj to w systemd

Timer jest tu lepszy od crona: loguje do journala i nadrabia uruchomienie, jeśli serwer był wtedy wyłączony.

# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

forget --prune zostawia 7 dziennych, 4 tygodniowe i 6 miesięcznych snapshotów, a resztę kasuje. Jeśli masz krok zrzutu bazy, wstaw go w linię ExecStartPre=.

7. Naprawdę coś przywróć

To krok, który zamienia "mamy kopie" w fakt. Wyciągnij jeden katalog do folderu tymczasowego i obejrzyj go:

source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check

Zrób to raz teraz i potem co kilka miesięcy. restic check weryfikuje strukturę repozytorium; przywrócenie dowodzi, że dane naprawdę tam są.

restic a Managed Backups

Nie konkurują ze sobą. Managed Backups codziennie tworzą punkt przywracania całego serwera, który przywracasz z panelu — szybki ratunek po nieudanej aktualizacji. Kosztują $2 miesięcznie i są gratis w każdym planie rocznym. restic daje kopie na poziomie plików, poza serwerem, w storage, który kontrolujesz — to ważne, gdy problemem jest plik skasowany w zeszły wtorek albo gdy chcesz mieć kopię całkowicie poza naszą infrastrukturą.

Jeśli przechowujesz wrażliwe dane, połącz to z pełnym szyfrowaniem dysku albo zobacz zastosowanie szyfrowanego magazynu, żeby postawić własne miejsce docelowe kopii. Plan Micro wystarczy dla większości małych serwerów razem z ich kopiami.

FAQ

Co się stanie, jeśli zgubię hasło do restic?

Kopie przepadają na zawsze. restic szyfruje wszystko po stronie klienta i nie ma klucza odzyskiwania. Trzymaj hasło w menedżerze haseł, nie tylko na serwerze, którego kopię robisz.

Gdzie powinno być repozytorium?

Wszędzie, tylko nie na samym serwerze: w storage obiektowym zgodnym z S3, na innym VPS przez SFTP albo na maszynie w domu. Kopia na tym samym dysku umiera razem z nim.

Jak zrobić kopię bazy danych przez restic?

Najpierw zrób zrzut i kopiuj zrzut — dla PostgreSQL 'pg_dump -Fc', dla MySQL 'mysqldump --single-transaction'. Kopiowanie plików działającej bazy może dać kopię, która się nie uruchomi.

Ile miejsca zajmują kopie?

Mniej, niż się spodziewasz. restic dzieli pliki na fragmenty i każdy zapisuje tylko raz, więc codzienne snapshoty mało zmieniającego się serwera dokładają jedynie zmienione dane.

Czy nadal potrzebuję Managed Backups?

Rozwiązują różne problemy. Managed Backups dają codzienne punkty przywracania całego serwera, które przywracasz z panelu. restic daje kopie na poziomie plików, poza serwerem i pod twoją kontrolą. Wiele osób używa obu.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.