Alla har backuper tills de försöker återställa en. Mappen visar sig vara tom, cronjobbet dog i mars, eller arkivet ligger på samma disk som just gick sönder. restic löser det mesta av det: det krypterar på din sida, lagrar varje databit en gång och gör det lika enkelt att återställa en enda fil som att säkerhetskopiera hela servern.
Här är en uppsättning vi faktiskt skulle lita på, på Ubuntu eller Debian.
1. Installera restic
apt update && apt install -y restic
restic self-update
Distributionspaketen ligger efter; self-update hämtar den aktuella versionen.
2. Välj en plats för repositoryt
Repositoryt får inte ligga på servern du skyddar. Två vanliga val:
- En annan server över SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - S3-kompatibel objektlagring:
s3:https://s3.example.com/my-bucket/web1
3. Spara inloggningsuppgifterna
Håll allt i en fil som bara root kan läsa, så att timern och ditt skal använder samma inställningar:
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
Kopiera nu innehållet i /root/.restic-pass till din lösenordshanterare. Utan det kan backuperna inte dekrypteras — varken av dig eller av någon annan.
4. Initiera och kör den första backupen
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
Justera sökvägarna efter var din data faktiskt ligger. Docker-volymer finns under /var/lib/docker/volumes; applikationsdata ligger ofta i /srv eller /opt.
5. Databaser: dumpa först, säkerhetskopiera sedan
Säkerhetskopiera inte råfilerna från en körande databas. Dumpa den precis före backupen:
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
Lägg till /var/backups/db i backupsökvägarna. Vår PostgreSQL-guide har mer om dumpar.
6. Schemalägg med systemd
En timer slår cron här: den loggar till journalen och tar igen en körning om servern var avstängd vid den tidpunkten.
# /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 behåller 7 dagliga, 4 veckovisa och 6 månatliga snapshots och raderar resten. Har du ett steg för databasdump, lägg det på en ExecStartPre=-rad.
7. Återställ faktiskt något
Det här är steget som gör "vi har backuper" till ett faktum. Hämta tillbaka en katalog till en tillfällig mapp och titta på den:
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
Gör det en gång nu och sedan med några månaders mellanrum. restic check verifierar repositoryts struktur; återställningen bevisar att datan verkligen finns där.
restic och Managed Backups
De konkurrerar inte. Managed Backups tar en daglig återställningspunkt för hela servern som du rullar tillbaka från panelen — den snabba lösningen efter en misslyckad uppgradering. De kostar $2 i månaden och ingår gratis i alla årsplaner. restic ger dig externa kopior på filnivå i lagring du själv kontrollerar, vilket spelar roll när problemet är en fil som raderades i tisdags eller när du vill ha en kopia helt utanför vår infrastruktur.
Lagrar du känslig data, kombinera detta med full diskkryptering, eller titta på användningsfallet krypterad lagring för att köra ditt eget backupmål. En Micro-plan räcker för de flesta små servrar plus deras backupjobb.
Kommentarer
Inga kommentarer än. Bli först.