> For the complete documentation index, see [llms.txt](https://docs.checkcle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.checkcle.io/checkcle-docs-zh/ru-men/bei-fen.md).

# 备份

### 1. 数据持久化设置

CheckCle 使用 **PocketBase** 作为其嵌入式数据库。默认情况下，PocketBase 将所有应用数据存储在容器内的 `pb_data` 文件夹中。为了在重启或重新创建容器时防止数据丢失，您应将此目录在主机上持久化。

#### 示例：主机卷挂载

在您的容器配置中：

* **主机路径**: `/mnt/db/pb_data`
* **容器路径**: `/mnt/pb_data`
* **模式**: `读写（RW）` （读/写）

这可确保所有 PocketBase 数据（SQLite 数据库、上传的文件、迁移、日志）存储在主机上的：

```
/mnt/db/pb_data
```

通过此设置，即使容器被移除或重新创建，CheckCle 的数据也会保留。

<figure><img src="/files/77b006ad965fc78e012bf522c91b163788b3216d" alt=""><figcaption></figcaption></figure>

### 2. pb\_data 的备份策略 `pb_data`

由于 `pb_data` 包含 SQLite 数据库和文件存储，因此定期备份至关重要。以下是推荐的策略：

#### A. 简单文件复制备份

使用 `使用 rsync` 或 `或 cp` 将 `pb_data` 文件夹复制到备份位置：

```bash
# 示例：带时间戳备份到 /backups/checkcle
rsync -avz /mnt/db/pb_data /backups/checkcle/pb_data_$(date +%F_%H-%M-%S)
```

#### B. 压缩归档备份

创建一个压缩的 `.tar.gz` 归档以便携带：

```bash
tar -czvf /backups/checkcle/pb_data_$(date +%F).tar.gz /mnt/db/pb_data
```

#### C. 自动化 Cron 任务

使用自动化每天备份 `cron`:

```bash
0 2 * * * rsync -avz /mnt/db/pb_data /backups/checkcle/pb_data_$(date +\%F) >> /var/log/checkcle_backup.log 2>&1
```

此任务在 **每天凌晨 2 点运行**.

#### D. 远程备份（可选）

将备份推送到远程服务器或云（S3、MinIO，或 rsync 到另一台服务器）：

```bash
rsync -avz /mnt/db/pb_data user@remote-server:/remote/backups/checkcle/
```

***

### 3. 恢复策略

要恢复备份：

1. 停止 CheckCle（PocketBase）容器：

   ```bash
   docker stop checkcle
   ```
2. 用您的备份替换该 `pb_data` 目录：

   ```bash
   rm -rf /mnt/db/pb_data
   cp -r /backups/checkcle/pb_data_2025-09-15 /mnt/db/pb_data
   ```
3. 重启容器：

   ```bash
   docker start checkcle
   ```

### 4. 最佳实践

* **在升级 CheckCle 或 PocketBase 之前始终备份** CheckCle 或 PocketBase。
* **定期测试恢复流程** 以确保备份有效。
* **使用异地存储** （S3、Minio 或另一台服务器）以便灾难恢复。
* **监控主机上的磁盘空间** 以防止备份失败。
