−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS

Πώς να κρατάτε αντίγραφα ασφαλείας VPS με restic (κρυπτογραφημένα, εκτός server)

Κρυπτογραφημένα αντίγραφα VPS με αφαίρεση διπλοτύπων μέσω restic: αποθετήριο σε αποθήκευση συμβατή με S3 ή σε άλλον server, timer systemd, διατήρηση και δοκιμή επαναφοράς.

Όλοι έχουν αντίγραφα ασφαλείας μέχρι να προσπαθήσουν να επαναφέρουν ένα. Ο φάκελος αποδεικνύεται άδειος, το cron job πέθανε τον Μάρτιο, ή το αρχείο βρίσκεται στον ίδιο δίσκο που μόλις χάλασε. Το restic λύνει τα περισσότερα: κρυπτογραφεί από τη δική σας πλευρά, αποθηκεύει κάθε κομμάτι δεδομένων μία φορά και κάνει την επαναφορά ενός αρχείου εξίσου εύκολη με το backup όλου του server.

Ορίστε μια ρύθμιση που θα εμπιστευόμασταν πραγματικά, σε Ubuntu ή Debian.

1. Εγκαταστήστε το restic

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

Τα πακέτα της διανομής μένουν πίσω· το self-update κατεβάζει την τρέχουσα έκδοση.

2. Διαλέξτε θέση για το αποθετήριο

Το αποθετήριο δεν πρέπει να βρίσκεται στον server που προστατεύετε. Δύο συνηθισμένες επιλογές:

3. Αποθηκεύστε τα διαπιστευτήρια

Κρατήστε τα όλα σε ένα αρχείο που διαβάζει μόνο ο root, ώστε ο timer και το 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. Αρχικοποιήστε και τρέξτε το πρώτο backup

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

Προσαρμόστε τις διαδρομές εκεί όπου πραγματικά βρίσκονται τα δεδομένα σας. Τα volumes του Docker είναι στο /var/lib/docker/volumes· τα δεδομένα εφαρμογών συχνά στο /srv ή στο /opt.

5. Βάσεις δεδομένων: πρώτα dump, μετά backup

Μην κρατάτε αντίγραφο των ακατέργαστων αρχείων μιας βάσης σε λειτουργία. Κάντε dump ακριβώς πριν από το backup:

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

Προσθέστε το /var/backups/db στις διαδρομές του backup. Ο οδηγός μας για PostgreSQL έχει περισσότερα για τα dumps.

6. Προγραμματίστε το με systemd

Εδώ ένας timer είναι καλύτερος από το cron: γράφει στο journal και καλύπτει μια χαμένη εκτέλεση αν ο server ήταν κλειστός εκείνη την ώρα.

# /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 μηνιαία snapshots και σβήνει τα υπόλοιπα. Αν έχετε βήμα για dump της βάσης, βάλτε το σε γραμμή 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 παίρνουν κάθε μέρα ένα σημείο επαναφοράς ολόκληρου του server, που το επαναφέρετε από τον πίνακα — η γρήγορη λύση μετά από αναβάθμιση που πήγε στραβά. Κοστίζουν $2 τον μήνα και περιλαμβάνονται δωρεάν σε κάθε ετήσιο πλάνο. Το restic δίνει αντίγραφα σε επίπεδο αρχείων, εκτός server, σε αποθήκευση που ελέγχετε εσείς — κάτι που μετράει όταν το πρόβλημα είναι ένα αρχείο που σβήστηκε την περασμένη Τρίτη ή όταν θέλετε αντίγραφο εντελώς έξω από την υποδομή μας.

Αν κρατάτε ευαίσθητα δεδομένα, συνδυάστε το με πλήρη κρυπτογράφηση δίσκου, ή δείτε τη χρήση για κρυπτογραφημένη αποθήκευση για να τρέχετε τον δικό σας προορισμό αντιγράφων. Ένα πλάνο Micro αρκεί για τους περισσότερους μικρούς servers μαζί με τα backups τους.

Συχνές ερωτήσεις

Τι γίνεται αν χάσω τον κωδικό του restic;

Τα αντίγραφα χάνονται για πάντα. Το restic κρυπτογραφεί τα πάντα στην πλευρά του πελάτη και δεν υπάρχει κλειδί ανάκτησης. Κρατήστε τον κωδικό σε διαχειριστή κωδικών, όχι μόνο στον server που κάνετε backup.

Πού πρέπει να βρίσκεται το αποθετήριο;

Οπουδήποτε εκτός από τον ίδιο τον server: σε αποθήκευση αντικειμένων συμβατή με S3, σε άλλο VPS μέσω SFTP ή σε ένα μηχάνημα στο σπίτι. Ένα αντίγραφο στον ίδιο δίσκο πεθαίνει μαζί του.

Πώς κάνω backup μιας βάσης δεδομένων με restic;

Κάντε πρώτα dump και κρατήστε αντίγραφο του dump — για PostgreSQL 'pg_dump -Fc', για MySQL 'mysqldump --single-transaction'. Η αντιγραφή των αρχείων μιας βάσης σε λειτουργία μπορεί να δώσει αντίγραφο που δεν ξεκινά.

Πόσο χώρο πιάνουν τα αντίγραφα;

Λιγότερο απ' όσο νομίζετε. Το restic σπάει τα αρχεία σε κομμάτια και αποθηκεύει κάθε κομμάτι μία φορά, οπότε τα ημερήσια snapshots ενός server που αλλάζει λίγο προσθέτουν μόνο τα αλλαγμένα δεδομένα.

Χρειάζομαι ακόμα τα Managed Backups;

Λύνουν διαφορετικά προβλήματα. Τα Managed Backups δίνουν ημερήσια σημεία επαναφοράς ολόκληρου του server, που τα επαναφέρετε από τον πίνακα. Το restic δίνει αντίγραφα σε επίπεδο αρχείων, εκτός server και υπό δικό σας έλεγχο. Πολλοί χρησιμοποιούν και τα δύο.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.