−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS

چطور با restic از VPS پشتیبان بگیریم (رمزگذاری‌شده، بیرون از سرور)

پشتیبان‌های رمزگذاری‌شده و بدون تکرار از VPS با restic: مخزن روی فضای سازگار با S3 یا سروری دیگر، تایمر systemd، سیاست نگهداری و آزمون بازیابی.

همه پشتیبان دارند تا وقتی که بخواهند یکی را بازیابی کنند. پوشه خالی از آب درمی‌آید، کرون‌جاب در اسفند مرده، یا آرشیو روی همان دیسکی است که همین حالا خراب شد. restic بیشتر این‌ها را حل می‌کند: سمت شما رمزگذاری می‌کند، هر تکه داده را یک بار ذخیره می‌کند و بازیابی یک فایل را به سادگی پشتیبان‌گیری از کل سرور می‌کند.

این تنظیماتی است که واقعاً به آن اعتماد می‌کنیم، روی Ubuntu یا Debian.

۱. restic را نصب کنید

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

بسته‌های توزیع عقب‌اند؛ self-update نسخه‌ی فعلی را می‌گیرد.

۲. جایی برای مخزن انتخاب کنید

مخزن نباید روی سروری باشد که از آن محافظت می‌کنید. دو انتخاب رایج:

۳. اطلاعات دسترسی را ذخیره کنید

همه چیز را در یک فایل که فقط 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 را در مدیر رمز عبورتان کپی کنید. بدون آن، پشتیبان‌ها رمزگشایی نمی‌شوند — نه توسط شما، نه هیچ‌کس دیگر.

۴. مخزن را راه بیندازید و اولین پشتیبان را بگیرید

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.

۵. پایگاه داده: اول دامپ، بعد پشتیبان

از فایل‌های خام پایگاه داده‌ی در حال اجرا پشتیبان نگیرید. درست پیش از پشتیبان‌گیری دامپ بگیرید:

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

/var/backups/db را به مسیرهای پشتیبان اضافه کنید. راهنمای PostgreSQL درباره‌ی دامپ‌ها بیشتر توضیح می‌دهد.

۶. با systemd زمان‌بندی کنید

این‌جا تایمر از کرون بهتر است: در ژورنال لاگ می‌نویسد و اگر سرور سر وقت خاموش بوده، اجرای جامانده را جبران می‌کند.

# /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= بگذارید.

۷. واقعاً چیزی را بازیابی کنید

این مرحله است که «ما پشتیبان داریم» را به واقعیت تبدیل می‌کند. یک پوشه را به یک پوشه‌ی موقت برگردانید و نگاهش کنید:

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 هر روز یک نقطه‌ی بازیابی از کل سرور می‌گیرد که از پنل برمی‌گردانید — راه‌حل سریع بعد از به‌روزرسانی‌ای که خراب شد. ماهی ۲ دلار هزینه دارد و در هر پلن سالانه رایگان است. restic کپی‌های در سطح فایل و بیرون از سرور را روی فضایی که خودتان کنترل می‌کنید می‌دهد؛ این وقتی مهم است که مشکل فایلی است که سه‌شنبه‌ی گذشته پاک شده یا می‌خواهید کپی‌ای کاملاً بیرون از زیرساخت ما داشته باشید.

اگر داده‌ی حساس نگه می‌دارید، این را با رمزگذاری کامل دیسک ترکیب کنید، یا برای راه‌اندازی مقصد پشتیبان خودتان کاربرد فضای ذخیره‌سازی رمزگذاری‌شده را ببینید. پلن Micro برای بیشتر سرورهای کوچک به‌همراه کارهای پشتیبان‌گیری‌شان کافی است.

پرسش‌های متداول

اگر رمز restic را گم کنم چه می‌شود؟

پشتیبان‌ها برای همیشه از دست می‌روند. restic همه چیز را سمت کلاینت رمزگذاری می‌کند و کلید بازیابی وجود ندارد. رمز را در یک مدیر رمز عبور نگه دارید، نه فقط روی سروری که از آن پشتیبان می‌گیرید.

مخزن کجا باشد؟

هر جایی جز خود سرور: فضای ذخیره‌سازی شیء سازگار با S3، یک VPS دیگر از طریق SFTP یا دستگاهی در خانه. پشتیبانی که روی همان دیسک باشد با همان دیسک از بین می‌رود.

چطور با restic از پایگاه داده پشتیبان بگیرم؟

اول دامپ بگیرید و از دامپ پشتیبان بگیرید — برای PostgreSQL 'pg_dump -Fc'، برای MySQL 'mysqldump --single-transaction'. کپی کردن فایل‌های پایگاه داده‌ی در حال اجرا ممکن است پشتیبانی بدهد که بالا نمی‌آید.

پشتیبان‌ها چقدر فضا می‌گیرند؟

کمتر از آنچه فکر می‌کنید. restic فایل‌ها را به تکه‌ها تقسیم می‌کند و هر تکه را یک بار ذخیره می‌کند، پس اسنپ‌شات‌های روزانه‌ی سروری که کم تغییر می‌کند فقط داده‌های تغییرکرده را اضافه می‌کنند.

هنوز به Managed Backups نیاز دارم؟

این دو مشکل‌های متفاوتی را حل می‌کنند. Managed Backups نقطه‌های بازیابی روزانه از کل سرور می‌دهد که از پنل برمی‌گردانید. restic کپی‌های در سطح فایل، بیرون از سرور و در کنترل خودتان می‌دهد. خیلی‌ها از هر دو استفاده می‌کنند.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.