Skip to content

بک‌آپ و ریستور

بک‌آپ همان یک چیزی است که دوباره ساخته نمی‌شود: کلیدهای خصوصی اینترفیس‌ها و اعتبار هر مشتری. آن‌ها را از دست بدهی، همهٔ مشتری‌ها باید دوباره صادر شوند. باینری، پکیج‌ها، سرتیفیکیت — همه جایگزین‌شدنی‌اند. این نه. با آرشیو مثل فایل رمز رفتار کن.

داخلش چیست

یک .tar.gz که دارد:

  • wui.db — اسنپ‌شات سازگار SQLite (با VACUUM INTO، نه کپی خامی که وسط نوشتن گرفته شود). فقط در بک‌آپ‌های پنل SQLite.
  • wui-export.json — هر جدول به‌صورت JSON، از طریق اسکیما. در هر بک‌آپی، با هر موتوری. این همان کپی‌ای است که از موتور و نسخه عبور می‌کند: ستونی که پنل جدیدتر اضافه کرده روی پیش‌فرض می‌ماند، ستونی که حذف کرده نادیده گرفته می‌شود.
  • بقیهٔ /var/lib/wui — PKI و فایل‌های سرور OpenVPN، پروفایل‌های تولیدشده — به‌جز خود بک‌آپ‌ها و فایل‌های جانبی WAL.

گرفتن بک‌آپ

کجاچطور
پنلتنظیمات → Backup → Back up now، یا دانلود هر آرشیوِ لیست
زمان‌بندیتنظیمات → Backup: فاصله و تعداد نگهداری؛ در /var/backups/wui نوشته می‌شود
ترمینالw-ui backup → ۱، یا wui backup create (با محیط پنل؛ منو خودش می‌دهد)
تلگرامدستور بک‌آپ ربات آرشیو را به چت ادمین می‌فرستد
حذف نصبقبل از حذف هر چیزی، یک کپی آخر در /root/wui-last-copy-<date>.tar.gz نوشته می‌شود

ریستور

ریستور هرگز روی دیتای زنده باز نمی‌شود. آرشیو سر تا ته چک می‌شود، از آنچه الان هست کپی گرفته می‌شود، فایل‌ها کنار پوشهٔ دیتا آماده می‌شوند، و استارت بعدی اعمالشان می‌کند — تنها لحظه‌ای که هیچ‌کس دیتابیس را باز ندارد.

  • از پنل: تنظیمات → Backup → Restore روی یک آرشیو لیست، یا Upload از سرور دیگر. پنل خودش ری‌استارت می‌شود.
  • از ترمینال: w-ui backup → ۲، مسیر را بده. یا wui backup restore FILE و بعد systemctl restart wui.

به‌طور پیش‌فرض آدرس‌های خودِ این سرور — چیزی که تونل‌ها به مشتری می‌گویند وصل شود — به‌جای آدرس‌های آرشیو نگه داشته می‌شود. دلیل معمول ریستور روی ماشین دیگر این است که اولی رفته، و آدرسش هم با آن. اگر داری یک ماشین را روی دیگری کلون می‌کنی و آدرس‌های آرشیو را می‌خواهی، --move-addresses در خط فرمان یا چک‌باکس در پنل.

بین موتورها و نسخه‌ها

بک‌آپ ازریستور درچه می‌شود
SQLiteSQLiteفایل اسنپ‌شات سر جایش برمی‌گردد — کپی دقیق
SQLitePostgreSQLدامپ JSON در PostgreSQL بار می‌شود، آی‌دی‌ها حفظ، sequence‌ها جلو برده می‌شوند
PostgreSQLPostgreSQLدامپ JSON بار می‌شود
PostgreSQLSQLiteدامپ JSON در یک فایل SQLite تازه بار می‌شود
W-UI قدیمی‌ترجدیدتراول اسکیما مهاجرت می‌کند، بعد دیتا در آن می‌نشیند
W-UI جدیدترقدیمی‌تروقتی فرمت دامپ از فهم پنل جدیدتر باشد با پیام روشن رد می‌شود؛ اول پنل را به‌روز کن

پس انتخاب دیتابیس موقع نصب نهایی نیست: با SQLite نصب کن، و وقتی مشتری‌ها زیاد شدند، بک‌آپ بگیر، نصاب را با --db postgres دوباره اجرا کن و ریستور کن.

جای چیزها

مسیرچه
/var/backups/wui/بک‌آپ‌های زمان‌بندی‌شده و بک‌آپ‌های پنل، با نگهداری؛ بیرون پوشهٔ دیتا تا ریستور رویشان ننویسد و حذف نصب نگهشان دارد
/var/lib/wui/.restore-pending/ریستور آماده‌شده؛ در استارت بعدی اعمال و حذف می‌شود
/var/lib/wui/.restore-import.jsonدامپی منتظر بار شدن، برای ریستور بین موتورها؛ بعد از بار شدن حذف، و اگر نشد با پسوند .failed نگه داشته می‌شود
/root/wui-last-copy-*.tar.gzکپی‌ای که حذف نصب می‌گذارد

Released under the AGPL-3.0 License.