Skip to content
VDS · బ్యాకప్‌లు మరియు డిస్క్

Restic: ఎన్‌క్రిప్షన్ మరియు హిస్టరీతో బ్యాకప్‌లు

ఎండ్-టు-ఎండ్ ఎన్‌క్రిప్షన్, డీడూప్లికేషన్, మరియు తేదీ ఆధారిత స్నాప్‌షాట్‌లతో బ్యాకప్‌లు ఎలా సెటప్ చేయాలి, వాటిని ఆటోమేట్ చేయాలి, మరియు ఇంటిగ్రిటీని ధృవీకరించాలి.

23 ఆగస్టు, 2026న నవీకరించబడింది

Restic, rsync చేయలేని పనిని చేస్తుంది: పంపే ముందు డేటాను ఎన్‌క్రిప్ట్ చేస్తుంది, స్నాప్‌షాట్ హిస్టరీని ఉంచుతుంది, ఒకే చంక్‌లను రెండుసార్లు కాపీ చేయదు, మరియు S3-అనుకూల స్టోరేజ్‌లో బ్యాకప్‌లను నిల్వ చేయగలదు. డిపెండెన్సీలు లేని ఒకే ప్రోగ్రామ్.

ఇన్‌స్టాలేషన్ మరియు మీ మొదటి రిపాజిటరీ

sudo apt install -y restic
restic version

రిపాజిటరీ అంటే మీ బ్యాకప్‌లు ఉండే చోటు. ఇది ఒక డైరెక్టరీ, SFTP ద్వారా ఒక మెషీన్, లేదా ఆబ్జెక్ట్ స్టోరేజ్ కావచ్చు:

export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

head -c 32 /dev/urandom | base64 > /root/.restic-pass
chmod 600 /root/.restic-pass
restic init

రిపాజిటరీ పాస్‌వర్డ్‌ను తిరిగి పొందలేము. మీరు దాన్ని మరచిపోతే, మీ డేటా పోతుంది — ఇక్కడ సపోర్ట్ ఉద్దేశపూర్వకంగానే లేదు. దాన్ని మెషీన్ నుండి వేరుగా నిల్వ చేయండి: పాస్‌వర్డ్ మేనేజర్‌లో, కాగితంపై, ఎక్కడైనా — కానీ మీరు బ్యాకప్ చేస్తున్న మెషీన్‌లోని /root/.restic-pass ఫైల్‌లో మాత్రమే కాదు.

బ్యాకప్ సృష్టించడం

restic backup /var/www /etc/nginx /opt/myapp \
  --exclude-file=/root/restic-exclude.txt \
  --tag daily
restic snapshots
restic ls latest
restic stats

రెండవ మరియు తదుపరి రన్‌లు వేగంగా ఉంటాయి: కొత్త డేటా చంక్‌లు మాత్రమే బదిలీ అవుతాయి.

రీస్టోర్ చేయడం

restic restore latest --target /restore
restic restore <snapshot-id> --target /restore --include /var/www/uploads

అంతా అన్‌ప్యాక్ చేయకుండా కంటెంట్‌ను చూడటం మరింత సౌకర్యవంతం:

mkdir /mnt/snapshots
restic mount /mnt/snapshots

ఈ డైరెక్టరీ అన్ని స్నాప్‌షాట్‌లను తేదీ ప్రకారం సాధారణ ఫోల్డర్‌లుగా చూపిస్తుంది. అనుకోకుండా డిలీట్ అయిన ఒకే ఫైల్‌ను బయటకు తీయడానికి ఇది ఉత్తమ మార్గం.

షెడ్యూలింగ్ మరియు క్లీనప్

/usr/local/bin/backup.sh స్క్రిప్ట్:

#!/bin/bash
set -euo pipefail
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

docker compose -f /opt/myapp/compose.yaml exec -T db \
  pg_dump -U postgres app | gzip > /var/backups/db.sql.gz

restic backup /var/www /etc/nginx /opt/myapp /var/backups --tag daily
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
chmod 700 /usr/local/bin/backup.sh

తర్వాత systemd టైమర్ వస్తుంది, షెడ్యూల్ చేసిన టాస్క్‌లు చూడండి. forget --prune అదనపు స్నాప్‌షాట్‌లను తొలగించి స్థలాన్ని ఖాళీ చేస్తుంది; --prune లేకుండా, స్నాప్‌షాట్‌లు జాబితా నుండి మాయమవుతాయి కానీ డేటా అలాగే ఉంటుంది.

ఇంటెగ్రిటీ చెక్‌లు

restic check
restic check --read-data-subset=5%

మొదటి కమాండ్ నిర్మాణాన్ని తనిఖీ చేస్తుంది, రెండవది డేటాలో కొంత భాగాన్ని చదివి చెక్‌సమ్‌లను వెరిఫై చేస్తుంది. రెండవదాన్ని నెలకు ఒకసారి రన్ చేయండి: ఇది డిస్క్ మరియు బ్యాండ్‌విడ్త్‌ను లోడ్ చేస్తుంది, కానీ నిశ్శబ్ద కరప్షన్‌ను పట్టుకునేది ఇదే.

నిర్మాణ తనిఖీ నిజమైన రీస్టోర్‌కు ప్రత్యామ్నాయం కాదు — రీస్టోర్ డ్రిల్ చూడండి.

వనరులు

Restic మెమరీలో ఒక ఇండెక్స్‌ను ఉంచుతుంది: పెద్ద డేటాసెట్‌లపై అది వందల మెగాబైట్‌లు. 2 GB RAM ఉన్న VDS-1 పై, పదుల గిగాబైట్‌లను బ్యాకప్ చేయడం కొరతపడవచ్చు — పారలలిజాన్ని పరిమితం చేయండి లేదా బరువైన బ్యాకప్‌లను ఒక టియర్ పైకి మార్చండి. డిస్క్ లోడ్ గమనించదగ్గది, కాబట్టి రాత్రి సమయానికి షెడ్యూల్ చేయండి: డిస్క్ వేగం చూడండి.

సాధారణ తప్పులు

  • పాస్‌వర్డ్ బ్యాకప్ చేయబడుతున్న మెషీన్‌లో మాత్రమే నిల్వ ఉంటుంది. క్లాసిక్: బ్యాకప్‌ల కీతో పాటు మెషీన్ కూడా పోతుంది.
  • --prune లేకుండా forget. స్థలం ఖాళీ కాదు మరియు రిపాజిటరీ పెరుగుతూనే ఉంటుంది.
  • అదే డిస్క్‌లోని అదే డైరెక్టరీలో బ్యాకప్. మీకు రీస్టోర్ చేయడానికి ఎక్కడా ఉండదు — మరో లొకేషన్‌లో బ్యాకప్‌లు చూడండి.
  • క్యాష్‌లు మరియు /var/lib/docker మినహాయించబడలేదు. బ్యాకప్ ఎటువంటి ప్రయోజనం లేకుండా నాలుగు రెట్లు పెరుగుతుంది; ఏమి చేర్చాలి అనే జాబితా ఏమి బ్యాకప్ చేయాలి అనే ఆర్టికల్‌లో ఉంది.
  • పారలల్ రన్‌లు. రెండవ రన్ రిపాజిటరీ లాక్‌ను ఢీకొంటుంది. కాల్‌ను flock లో ర్యాప్ చేయండి.