OffshoreVps
امنیت8 اکتبر 20268 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

چگونه از VPS با restic پشتیبان بگیریم: خودکار و رمزگذاری‌شده

قاعده‌ی ۳-۲-۱، اینکه از چه چیزی پشتیبان بگیریم، یک راه‌اندازی رمزگذاری‌شده‌ی restic، یک اسکریپت cron و اینکه چرا باید بازیابی را آزمایش کنید. اسنپ‌شات‌های ارائه‌دهنده کافی نیستند.

یک VPS ممکن است از کار بیفتد، به اشتباه حذف شود یا با یک به‌روزرسانی بد خراب شود. تنها محافظت، پشتیبانی است که آزموده باشید. این راهنما پشتیبان‌گیری ساده، خودکار و رمزگذاری‌شده را با ابزارهای رایگان راه‌اندازی می‌کند.

پنجره‌ی ترمینال روی یک VPS که دستورهای پشتیبان‌گیری از VPS را نشان می‌دهد، با «sudo apt install -y restic» شروع می‌شود
نوع دستورهایی که در این راهنما روی سرور خود اجرا می‌کنید.

قاعدهٔ 3-2-1

3 نسخه از داده‌هایتان نگه دارید، روی 2 نوع متفاوت ذخیره‌سازی، و 1 نسخه جایی کاملاً دیگر. برای یک VPS این معمولاً یعنی داده‌های زنده، یک اسنپ‌شات محلی و یک نسخهٔ بیرونی نزد ارائه‌دهنده‌ای دیگر یا در کشوری دیگر.

چه چیزی را پشتیبان بگیریم

  • فایل‌ها و آپلودهای وب‌سایت (/var/www).
  • پایگاه‌های داده، که ابتدا در یک فایل خروجی گرفته شوند (هرگز فایل‌های زندهٔ پایگاه داده را کپی نکنید).
  • پیکربندی: /etc/nginx، تغییرات /etc، فایل‌های Docker Compose و volumeها.
  • کارهای cron و هر اسکریپت سفارشی.

سیستم‌عامل را می‌توانید در چند دقیقه دوباره نصب کنید. چیزی که نمی‌توانید دوباره نصب کنید داده‌ها و تنظیمات شماست.

از restic برای پشتیبان‌گیری رمزگذاری‌شده و بدون تکرار استفاده کنید

sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

فایل رمز عبور را با یک رشتهٔ تصادفی بلند بسازید و یک نسخه از آن را جای امنی نگه دارید. اگر این رمز عبور را گم کنید، پشتیبان‌ها باز نمی‌شوند. restic از ذخیره‌سازی سازگار با S3 هم پشتیبانی می‌کند، پس می‌توانید روی هر object store ارسال کنید.

گام‌های این راهنما به ترتیب: ۱. قاعده‌ی ۳-۲-۱؛ ۲. از چه چیزی پشتیبان بگیریم؛ ۳. از restic برای پشتیبان‌های رمزگذاری‌شده و بدون تکرار استفاده کنید؛ ۴. یک اسکریپت پشتیبان؛ ۵. بازیابی را آزمایش کنید؛ ۶. اسنپ‌شات‌ها کمک می‌کنند اما کافی نیستند
گام‌های این راهنما به ترتیب.

یک اسکریپت پشتیبان‌گیری

#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

آن را با نام /usr/local/bin/backup.sh ذخیره کنید، اجرایی کنید و زمان‌بندی کنید:

sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup

بازیابی را آزمایش کنید

restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx

پشتیبانی که هرگز بازیابی نکرده‌اید فقط یک امید است. هر فصل یک بار آزمایش کنید و همیشه پس از تغییر هر چیز.

اسنپ‌شات‌ها کمک می‌کنند، اما کافی نیستند

اسنپ‌شات‌های ارائه‌دهنده سریع‌اند و پیش از تغییرات پرخطر به کار می‌آیند، اما نزد همان ارائه‌دهنده و در همان حساب قرار دارند. آن‌ها را یک راحتی بدانید و یک نسخهٔ بیرونی مستقل نگه دارید.