−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS

restic से VPS का बैकअप कैसे लें (एन्क्रिप्टेड, सर्वर से बाहर)

restic के साथ VPS के एन्क्रिप्टेड और बिना दोहराव वाले बैकअप: S3-संगत स्टोरेज या दूसरे सर्वर पर रिपॉज़िटरी, systemd टाइमर, रिटेंशन और रिस्टोर टेस्ट।

हर किसी के पास बैकअप होते हैं, जब तक वह एक को रिस्टोर करने की कोशिश न करे। फ़ोल्डर ख़ाली निकलता है, cron जॉब मार्च में मर चुका होता है, या आर्काइव उसी डिस्क पर होता है जो अभी-अभी ख़राब हुई। restic इनमें से ज़्यादातर हल कर देता है: यह आपकी तरफ़ एन्क्रिप्ट करता है, हर डेटा टुकड़ा एक बार सहेजता है, और एक फ़ाइल रिस्टोर करना पूरे सर्वर के बैकअप जितना आसान बना देता है।

यह एक ऐसा सेटअप है जिस पर हम सच में भरोसा करेंगे, Ubuntu या Debian पर।

1. restic इंस्टॉल करें

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

डिस्ट्रीब्यूशन के पैकेज पीछे रह जाते हैं; self-update मौजूदा वर्शन ले आता है।

2. रिपॉज़िटरी के लिए जगह चुनें

रिपॉज़िटरी उस सर्वर पर नहीं होनी चाहिए जिसकी आप रक्षा कर रहे हैं। दो आम विकल्प:

3. एक्सेस विवरण सहेजें

सब कुछ एक ऐसी फ़ाइल में रखें जिसे सिर्फ़ root पढ़ सके, ताकि टाइमर और आपका 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. रिपॉज़िटरी शुरू करें और पहला बैकअप लें

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

पाथ को वहाँ के हिसाब से बदलें जहाँ आपका डेटा सच में है। Docker वॉल्यूम /var/lib/docker/volumes में रहते हैं; ऐप डेटा अक्सर /srv या /opt में।

5. डेटाबेस: पहले डंप, फिर बैकअप

चलते डेटाबेस की कच्ची फ़ाइलों का बैकअप न लें। बैकअप से ठीक पहले डंप बनाएँ:

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

/var/backups/db को बैकअप पाथ में जोड़ें। हमारी PostgreSQL गाइड में डंप के बारे में और जानकारी है।

6. systemd से शेड्यूल करें

यहाँ टाइमर cron से बेहतर है: यह journal में लॉग लिखता है और अगर तय समय पर सर्वर बंद था तो छूटा हुआ रन बाद में पूरा करता है।

# /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 सात रोज़ाना, चार साप्ताहिक और छह मासिक स्नैपशॉट रखता है और बाक़ी मिटा देता है। अगर आपके पास डेटाबेस डंप का चरण है तो उसे 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 हर दिन पूरे सर्वर का एक रिस्टोर पॉइंट बनाते हैं जिसे आप डैशबोर्ड से वापस लाते हैं — बिगड़े अपडेट के बाद का तेज़ इलाज। इनकी क़ीमत $2 प्रति माह है और ये हर सालाना प्लान में मुफ़्त शामिल हैं। restic फ़ाइल स्तर पर, सर्वर से बाहर, आपके नियंत्रण वाले स्टोरेज में कॉपियाँ देता है — यह तब मायने रखता है जब समस्या पिछले मंगलवार मिटी कोई फ़ाइल हो, या जब आप हमारे इंफ़्रास्ट्रक्चर से पूरी तरह बाहर एक कॉपी चाहते हों।

अगर आप संवेदनशील डेटा रखते हैं, तो इसे पूरी डिस्क एन्क्रिप्शन के साथ जोड़ें, या अपना बैकअप गंतव्य चलाने के लिए एन्क्रिप्टेड स्टोरेज उपयोग देखें। ज़्यादातर छोटे सर्वर और उनके बैकअप कामों के लिए Micro प्लान काफ़ी है।

सामान्य प्रश्न

अगर restic का पासवर्ड खो जाए तो क्या होगा?

बैकअप हमेशा के लिए चले जाएँगे। restic सब कुछ क्लाइंट की तरफ़ एन्क्रिप्ट करता है और कोई रिकवरी कुंजी नहीं होती। पासवर्ड को पासवर्ड मैनेजर में रखें, सिर्फ़ उस सर्वर पर नहीं जिसका बैकअप ले रहे हैं।

रिपॉज़िटरी कहाँ होनी चाहिए?

सर्वर के अलावा कहीं भी: S3-संगत ऑब्जेक्ट स्टोरेज, SFTP के ज़रिए कोई दूसरा VPS या घर पर कोई मशीन। उसी डिस्क पर रखा बैकअप उसी डिस्क के साथ ख़त्म हो जाता है।

restic से डेटाबेस का बैकअप कैसे लूँ?

पहले डंप बनाएँ और उस डंप का बैकअप लें — PostgreSQL के लिए 'pg_dump -Fc', MySQL के लिए 'mysqldump --single-transaction'। चलते डेटाबेस की फ़ाइलें कॉपी करने से ऐसा बैकअप मिल सकता है जो चालू ही न हो।

बैकअप कितनी जगह लेते हैं?

आपकी उम्मीद से कम। restic फ़ाइलों को टुकड़ों में बाँटता है और हर टुकड़ा एक बार सहेजता है, इसलिए कम बदलने वाले सर्वर के रोज़ाना स्नैपशॉट सिर्फ़ बदला हुआ डेटा जोड़ते हैं।

क्या मुझे अब भी Managed Backups चाहिए?

ये अलग-अलग समस्याएँ हल करते हैं। Managed Backups पूरे सर्वर के रोज़ाना रिस्टोर पॉइंट देते हैं, जिन्हें आप डैशबोर्ड से वापस लाते हैं। restic फ़ाइल स्तर पर, सर्वर से बाहर और आपके नियंत्रण में कॉपियाँ देता है। बहुत-से लोग दोनों इस्तेमाल करते हैं।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।