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లో ర్యాప్ చేయండి.