OffshoreVps
امنیت25 سپتامبر 20266 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

پشتیبان‌گیری از VPS با Restic یا Borg

پشتیبان‌های رمزگذاری‌شده و بدون تکرار روی سرور دوم: دستورهای restic و borg، dump پایگاه داده، نگهداری، زمان‌بندی و آزمایش بازیابی.

پشتیبانی که بتوانید بازیابی کنید تفاوت میان یک بعدازظهر آزاردهنده و از دست دادن یک پروژه است. راهنمای پایه‌ی پشتیبان‌گیری از VPS ایده را پوشش می‌دهد. این یکی با restic و BorgBackup پیش‌تر می‌رود: دو ابزار که پشتیبان‌های رمزگذاری‌شده و بدون تکرار را روی سرور دوم یا ذخیره‌سازی شیء می‌گیرند.

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

چرا restic یا borg به‌جای کپی ساده

  • حذف تکرار. فقط داده‌های تغییرکرده ذخیره می‌شوند، پس اسنپ‌شات‌های روزانه کوچک می‌مانند.
  • رمزگذاری. داده پیش از خروج از سرور شما رمزگذاری می‌شود.
  • اسنپ‌شات‌ها. می‌توانید وضعیت هر روز گذشته را بازیابی کنید.
  • راستی‌آزمایی. هر دو ابزار می‌توانند یکپارچگی مخزن را بررسی کنند.

یکی را انتخاب کنید. Restic ساده است و با انواع ذخیره‌سازی از جمله SFTP و ذخیره‌سازی سازگار با S3 کار می‌کند. Borg بسیار کارآمد است و از طریق SSH با سروری کار می‌کند که borg روی آن نصب است.

پشتیبان‌ها را کجا بفرستیم

هرگز تنها پشتیبان را روی همان سرور نگه ندارید. از یک VPS دوم در موقعیت دیگر، یک bucket سازگار با S3 یا یک storage box استفاده کنید. یک VPS کوچک با دیسک بزرگ مقصد پشتیبان ارزانی است. طرح‌های VPS را ببینید.

Restic: راه‌اندازی

sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

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

restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
گام‌های این راهنما به ترتیب: ۱. چرا restic یا borg به‌جای کپی ساده؛ ۲. پشتیبان‌ها را کجا بفرستیم؛ ۳. Restic: راه‌اندازی؛ ۴. پایگاه‌های داده به دقت نیاز دارند؛ ۵. زمان‌بندی کنید؛ ۶. بازیابی را آزمایش کنید
گام‌های این راهنما به ترتیب.

Borg: راه‌اندازی

sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check

کلید مخزن را با borg key export خروجی بگیرید و نگه دارید.

پایگاه‌های داده به دقت نیاز دارند

فایل‌های پایگاه داده‌ی در حال اجرا را کپی نکنید. ابتدا از آن‌ها dump بگیرید و از dump پشتیبان بگیرید:

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz

زمان‌بندی کنید

پشتیبان‌گیری را از یک systemd timer یا cron اجرا کنید. یک خط ساده‌ی cron:

15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

در صورت شکست به خودتان هشدار دهید، برای مثال با یک ping پایش در انتهای اسکریپت.

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

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

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