---
title: پشتیبان‌گیری و بازیابی
description: از پایگاه‌داده و گواهی‌های 3x-ui خود به‌صورت دستی یا از طریق ربات Telegram پشتیبان بگیرید و آن‌ها را بازیابی کنید.
icon: DatabaseBackup
---

تمام پیکربندی شما — ورودی‌ها، کلاینت‌ها و تنظیمات — در پایگاه‌داده‌ی پنل
قرار دارد. مرتب از آن پشتیبان بگیرید تا بتوانید بازیابی یا مهاجرت کنید.

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

- **پایگاه‌داده** — به‌صورت پیش‌فرض یک SQLite در `/etc/x-ui/x-ui.db` (یا پایگاه‌داده‌ی
  PostgreSQL شما اگر از آن backend استفاده می‌کنید).
- **گواهی‌ها** — هر چیزی که زیر `/root/cert/` (یا هر جایی که گواهی‌های TLS را نگه می‌دارید)
  قرار دارد.

## پشتیبان‌گیری دستی

می‌توانید یک نسخه‌ی پشتیبان را از صفحه‌ی نمای کلی پنل دانلود کنید، یا فایل پایگاه‌داده را
مستقیماً از سرور کپی نمایید:

```bash title="copy the SQLite database"
cp /etc/x-ui/x-ui.db /root/x-ui-backup-$(date +%F).db
```

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

<Callout type="warn">
  هر وقت ممکن است، یک نسخه‌ی پشتیبان را روی **همان نسخه‌ی اصلی (major)** که از آن گرفته شده
  بازیابی کنید. در ارتقاهای میان‌نسخه‌ای اصلی، به‌جای تحمیل یک شِمای قدیمی، بگذارید پنل
  مهاجرت‌های خود را اجرا کند.
</Callout>

## پشتیبان‌گیری با Telegram

اگر [ربات Telegram](/docs/operations/telegram-bot) را پیکربندی کرده‌اید، گزینه‌ی
**`tgBotBackup`** را فعال کنید تا یک نسخه‌ی پشتیبان به گزارش دوره‌ای ضمیمه شود (بر اساس
زمان‌بندی `tgRunTime`، به‌صورت پیش‌فرض روزانه). ربات هم **پایگاه‌داده** و هم **`config.json`
مربوط به Xray** را به چت ادمین شما می‌فرستد، بنابراین همیشه یک نسخه‌ی خارج از سرور در اختیار
دارید. ادمین‌ها همچنین می‌توانند به‌صورت درخواستی از منوی ربات یک نسخه‌ی پشتیبان بخواهند.

## دامپ / بازیابی SQLite

دستور `x-ui migrate-db` پایگاه‌داده‌ی SQLite را به یک دامپ متنی SQL ساده و بالعکس تبدیل
می‌کند (برای بررسی یا انتقال میان دستگاه‌ها کاربردی است):

```bash
x-ui migrate-db --dump /root/x-ui.sql       # SQLite -> SQL text
x-ui migrate-db --restore /root/x-ui.sql     # SQL text -> SQLite
```

برای مهاجرت به PostgreSQL، به [پایگاه‌داده](/docs/reference/database) مراجعه کنید.

<Callout type="info">
  از هر روشی که استفاده می‌کنید، نسخه‌های پشتیبان را **خارج از سرور** نگه دارید و هرازگاهی
  یک بازیابی را آزمایش کنید — یک نسخه‌ی پشتیبانِ آزمایش‌نشده، پشتیبان به‌حساب نمی‌آید.
</Callout>
