ہر کسی کے پاس بیک اپ ہوتا ہے جب تک وہ اسے بحال کرنے کی کوشش نہ کرے۔ فولڈر خالی نکلتا ہے، cron جاب مارچ میں مر چکی ہوتی ہے، یا آرکائیو اسی ڈسک پر ہوتا ہے جو ابھی خراب ہوئی۔ restic ان میں سے زیادہ تر مسئلے حل کر دیتا ہے: یہ آپ کی طرف انکرپٹ کرتا ہے، ہر ڈیٹا ٹکڑا ایک بار محفوظ کرتا ہے، اور ایک فائل کی بحالی کو پورے سرور کے بیک اپ جتنا آسان بنا دیتا ہے۔
یہ ایک ایسا سیٹ اپ ہے جس پر ہم واقعی بھروسہ کریں گے، Ubuntu یا Debian پر۔
1. restic انسٹال کریں
apt update && apt install -y restic
restic self-update
ڈسٹری بیوشن کے پیکجز پیچھے رہ جاتے ہیں؛ self-update موجودہ ورژن لے آتا ہے۔
2. ریپوزٹری کے لیے جگہ چنیں
ریپوزٹری اس سرور پر نہیں ہونی چاہیے جس کی آپ حفاظت کر رہے ہیں۔ دو عام انتخاب:
- SFTP کے ذریعے دوسرا سرور:
sftp:backup@203.0.113.20:/srv/restic/web1 - S3 سے مطابقت رکھنے والی آبجیکٹ اسٹوریج:
s3:https://s3.example.com/my-bucket/web1
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 پلان کافی ہے۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔