−25%

за Windows при годишно плащане, до 31.10. Към плановете

EQVPS

Как да правите резервни копия на VPS с restic (криптирани, извън сървъра)

Криптирани копия на VPS с дедупликация чрез restic: хранилище в S3-съвместимо пространство или на друг сървър, systemd таймер, правила за съхранение и тест за възстановяване.

Всеки има резервни копия, докато не опита да възстанови едно. Папката се оказва празна, cron задачата е умряла през март или архивът стои на същия диск, който току-що се е повредил. restic решава повечето от това: криптира от ваша страна, пази всяко парче данни веднъж и прави възстановяването на един файл толкова лесно, колкото архивирането на целия сървър.

Ето настройка, на която наистина бихме се доверили, на Ubuntu или Debian.

1. Инсталирайте restic

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

Пакетите на дистрибуцията изостават; self-update изтегля текущата версия.

2. Изберете място за хранилището

Хранилището не бива да е на сървъра, който защитавате. Два обичайни избора:

3. Запазете данните за достъп

Дръжте всичко в един файл, който само root чете, за да ползват таймерът и вашият shell едни и същи настройки:

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

Сега копирайте съдържанието на /root/.restic-pass в мениджъра си на пароли. Без него копията не могат да бъдат декриптирани — нито от вас, нито от някой друг.

4. Инициализирайте и направете първото копие

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

Настройте пътищата спрямо това къде реално са данните ви. Docker volume-ите са в /var/lib/docker/volumes; данните на приложенията често са в /srv или /opt.

5. Бази данни: първо дъмп, после копие

Не архивирайте суровите файлове на работеща база. Направете дъмп точно преди копието:

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

Добавете /var/backups/db към пътищата за архивиране. В нашето ръководство за PostgreSQL има повече за дъмповете.

6. Насрочете го със systemd

Тук таймерът е по-добър от cron: пише в journal-а и наваксва пропуснато изпълнение, ако сървърът е бил изключен в уречения час.

# /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 пази 7 дневни, 4 седмични и 6 месечни snapshot-а и изтрива останалите. Ако имате стъпка с дъмп на базата, сложете я в ред ExecStartPre=.

7. Наистина възстановете нещо

Това е стъпката, която превръща „имаме копия" във факт. Върнете една директория във временна папка и я разгледайте:

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

Направете го веднъж сега и после на всеки няколко месеца. restic check проверява структурата на хранилището; възстановяването доказва, че данните наистина са там.

restic и Managed Backups

Те не си съперничат. Managed Backups правят всеки ден точка за възстановяване на целия сървър, която връщате от панела — бързото решение след неуспешно обновяване. Струват $2 на месец и са безплатни с всеки годишен план. restic дава копия на ниво файл извън сървъра в хранилище, което контролирате, а това е важно, когато проблемът е файл, изтрит миналия вторник, или когато искате копие изцяло извън нашата инфраструктура.

Ако пазите чувствителни данни, комбинирайте това с пълно криптиране на диска или вижте сценария за криптирано хранилище, за да поддържате собствена цел за копията. План Micro стига за повечето малки сървъри заедно с техните задачи за архивиране.

Въпроси

Какво става, ако загубя паролата на restic?

Копията са загубени завинаги. restic криптира всичко от страна на клиента и няма ключ за възстановяване. Пазете паролата в мениджър на пароли, а не само на сървъра, който архивирате.

Къде да бъде хранилището?

Навсякъде, освен на самия сървър: S3-съвместимо обектно хранилище, друг VPS през SFTP или машина у дома. Копие на същия диск умира заедно с него.

Как да архивирам база данни с restic?

Първо направете дъмп и архивирайте дъмпа — за PostgreSQL 'pg_dump -Fc', за MySQL 'mysqldump --single-transaction'. Копирането на файловете на работеща база може да даде копие, което не стартира.

Колко място заемат копията?

По-малко, отколкото очаквате. restic разделя файловете на части и пази всяка част веднъж, така че ежедневните snapshot-и на почти непроменящ се сървър добавят само променените данни.

Трябват ли ми още Managed Backups?

Те решават различни проблеми. Managed Backups дават ежедневни точки за възстановяване на целия сървър, които връщате от панела. restic дава копия на ниво файл извън сървъра, които контролирате вие. Мнозина ползват и двете.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.