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

rsync తో బ్యాకప్‌లు

SSH ద్వారా మరో సర్వర్‌కు ఫైల్ కాపీయింగ్ ఎలా సెటప్ చేయాలి, హార్డ్ లింక్‌లను ఉపయోగించి వెర్షన్ హిస్టరీ ఎలా చేయాలి, మరియు ప్రమాదకరమైన --delete ఆప్షన్‌తో ఎక్కువ ఎలా డిలీట్ చేయకూడదు.

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

కాపీలు చేయడానికి rsync అత్యంత సులభమైన పనిచేసే మార్గం: ఇది అన్నిచోట్లా అందుబాటులో ఉంటుంది, ఫైల్‌లలో మారిన భాగాలను మాత్రమే బదిలీ చేస్తుంది మరియు SSH ద్వారా పనిచేస్తుంది. చిన్న డేటాసెట్‌లకు ఇది సరిపోతుంది.

ప్రాథమిక కమాండ్

rsync -avz --delete \
  -e "ssh -i /root/.ssh/backup_key -p 22" \
  /var/www/ backup@backup.example.com:/srv/backup/vds/www/

ఫ్లాగ్‌ల వివరణ:

  • -a — అనుమతులు, యజమానులు, సమయాలు మరియు లింక్‌లను భద్రపరుస్తుంది;
  • -v — ఏమి జరుగుతుందో చూపిస్తుంది;
  • -z — బదిలీ సమయంలో కంప్రెస్ చేస్తుంది (డేటా ఎక్కువగా ఉంటే 500 Mbps వరకు బ్యాండ్‌విడ్త్‌పై ఉపయోగకరం);
  • --delete — సోర్స్‌లో ఇక లేని వాటిని రిసీవర్‌లో తొలగిస్తుంది.

సోర్స్ పాత్ చివరన ఉన్న స్లాష్ అంటే “డైరెక్టరీలోని కంటెంట్”; అది లేకుంటే డైరెక్టరీనే కాపీ అవుతుంది. /var/www/ మరియు /var/www వేర్వేరు ఫలితాలను ఇస్తాయి, మరియు --deleteతో కలిపి వాడినప్పుడు ఆ తేడా తప్పు వస్తువును తుడిచివేస్తుంది. ఎప్పుడూ మొదట --dry-runతో రన్ చేయండి.

rsync -avzn --delete /var/www/ backup@backup.example.com:/srv/backup/vds/www/

-n ఫ్లాగ్ అంటే డ్రై రన్.

పాస్‌వర్డ్ లేని యాక్సెస్ కీ

షెడ్యూల్ చేసిన కాపీయింగ్‌కు పాస్‌వర్డ్ నమోదు చేయకుండా లాగిన్ అవ్వడం అవసరం:

ssh-keygen -t ed25519 -f /root/.ssh/backup_key -N ""
ssh-copy-id -i /root/.ssh/backup_key.pub backup@backup.example.com

రిసీవర్‌లో ఈ కీని ఒకే కమాండ్‌కు పరిమితం చేయండి — అప్పుడు దొంగిలించబడిన కీ షెల్ ఇవ్వదు. రిసీవర్‌లోని ~/.ssh/authorized_keysలో:

command="rrsync -wo /srv/backup",restrict ssh-ed25519 AAAA... backup

హార్డ్ లింక్‌లతో వెర్షన్ హిస్టరీ

సాధారణ rsync ప్రస్తుత స్థితిని మాత్రమే ఉంచుతుంది: నిన్న మీరు ఒక ఫైల్‌ను తొలగించి ఈరోజు గమనించినట్లయితే, దాన్ని పునరుద్ధరించడానికి ఎక్కడా మార్గం ఉండదు. --link-dest మీకు హిస్టరీ ఇస్తుంది: మారని ఫైల్‌లు మళ్లీ కాపీ కావు, కానీ లింక్ అవుతాయి, కాబట్టి ముప్పై కాపీలు ఒకదాని కంటే కొంచెం ఎక్కువ స్థలమే తీసుకుంటాయి.

#!/bin/bash
set -euo pipefail
DEST=/srv/backup/vds
TODAY=$(date +%F)
rsync -a --delete \
  --link-dest="$DEST/latest" \
  /var/www/ "$DEST/$TODAY/"
ln -sfn "$DEST/$TODAY" "$DEST/latest"
find "$DEST" -maxdepth 1 -type d -mtime +30 -name "20*" -exec rm -rf {} +

స్క్రిప్ట్‌ను రాత్రిపూట షెడ్యూల్‌పై రన్ చేయండి, మరియు ఎప్పుడూ లాగింగ్‌తో.

మినహాయింపులు

rsync -avz --exclude-from=/root/backup-exclude.txt / backup@host:/srv/backup/vds/root/
/proc/
/sys/
/dev/
/run/
/tmp/
/var/lib/docker/
/var/cache/
*.log

మొత్తం రూట్‌ను కాపీ చేయడం చాలా అరుదుగా అవసరం: సరిగ్గా ఏమి బ్యాకప్ చేయాలి అనే ఆర్టికల్ నుండి ఖచ్చితమైన జాబితాను తయారు చేయడం మరింత ఉపయోగకరం.

rsync సరిపోని సందర్భాలు

  • మీకు స్టోరేజ్ ఎన్‌క్రిప్షన్ మరియు డీడూప్లికేషన్ అవసరమైతే, Restic వాడండి.
  • డేటా నిరంతరం మారుతూ ఇంటెగ్రిటీ ముఖ్యమైతే, మొదట డేటాబేస్‌ను డంప్ చేయండి, తర్వాత ఏర్పడిన ఫైల్‌ను rsync చేయండి.
  • రిసీవర్ మీరు నమ్మని వేరొకరి స్టోరేజ్ అయితే: rsync ఫైల్‌లను యథాతథంగా రాస్తుంది, క్లయింట్-సైడ్ ఎన్‌క్రిప్షన్ ఉండదు.

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

  • తప్పు సోర్స్ పాత్‌తో --delete. ఖాళీ సోర్స్ డైరెక్టరీ రిసీవర్‌ను తుడిచివేస్తుంది. డ్రై రన్ తప్పనిసరి.
  • అదే డిస్క్‌పై కాపీ. అది బ్యాకప్ కాదు, అదే వైఫల్యానికి రెండో లక్ష్యం. ఆఫ్‌సైట్ కాపీలు చూడండి.
  • ఇప్పటికే కంప్రెస్ అయిన డేటాకు కంప్రెషన్. -z ఆర్కైవ్‌లు మరియు ఇమేజ్‌లను నెమ్మదింపజేస్తుంది మాత్రమే.
  • రాత్రి రన్ డిస్క్ బాటిల్‌నెక్‌ను తాకడం. రైట్ త్రూపుట్ పరిమితి టియర్‌పై ఆధారపడి ఉంటుంది: డిస్క్ వేగం చూడండి. --bwlimit=20000 మరియు ఆఫ్-పీక్ గంటల్లో రన్ చేయడం సహాయపడతాయి.
  • ఎవరూ ఫలితాన్ని తనిఖీ చేయకపోవడం. రిటర్న్ కోడ్‌ను లాగ్ చేసి మానిటర్ చేయండి: rsync ... || echo "backup failed" | mail -s alert you@example.com.