# 从 2.x.x 升级

由于数据表结构变动较大，从 V2 版本升级至 V3 需要手动执行数据库升级助手。升级前请一定注意备份 V2 版本网站数据，避免造成数据丢失。

## 升级兼容性

从 V2 升级至 V3 后，以下数据将会丢失：

* 离线下载记录
* 定时任务设定
* 用户二步验证设定

## 升级前检查项

在进行升级前，请按照下列清单注意检查，确保所有项目都符合并知晓后再执行后续升级操作。

* 确保 V2 版本的 Cloudreve 具体版本号为 `2.0.0-Alpha1` ，您可以在 管理面板 - 关于 看到版本号；
* V3 版本暂时不支持 S3 类型存储策略，如果您正在使用 S3 存储策略，请备份或转移文件后，将存储策略及其下属文件删除；
* 如果您正在使用 远程存储策略，请备份或转移文件后，将存储策略及其下属文件删除，因为暂不支持升级远程存储策略；
* 备份 V2 网站文件、数据库；
* 如果您正在使用 OneDrive 任务队列，请先停止；
* 停止已设定的 Crontab 定时任务；
* 您已知晓 V3 版本的搭建方法，以及配置使用 MySQL 的过程，后续会使用到，本文不再赘述。

## 开始升级

### 搭建 V3 版本

参考下面页面，在 V2 版本 Cloudreve 网站目录下启动 V3：

{% content-ref url="/pages/-M2GxTV4LfGsFdbDFIWz" %}
[快速开始](/getting-started/install.md)
{% endcontent-ref %}

参考下面页面，在配置文件中指定 V3 版本使用 MySQL 数据库，请注意指定 V2 版本不同的数据库，或者使用数据表前缀与 V2 版本区分：

{% content-ref url="/pages/-M2HLuR0NcMWd52NZDJf" %}
[配置文件](/getting-started/config.md)
{% endcontent-ref %}

重启 V3 ，让 Cloudreve 初始化 V3 版本的数据表，初始化完成后，请不要执行任何操作。

### 运行升级助手

在 [Release 3.0.0](https://github.com/cloudreve/Cloudreve/releases/tag/3.0.0) 页面下载 `upgrade_from_2.0.0-Alpha1.zip` ( Pro 版用户请下载`upgrade_from_2.0.0-Alpha1-pro.zip`)，解压覆盖到 V2 根目录下。

在命令行下，切换工作目录到 V2 根目录，启动升级助手：

```bash
# 切换到 V2 根目录
cd /home/www/cloudreve.org

# 开始升级
php upgrade run
```

根据提示，输入 V3 版本的数据库信息，输入完成后会开始数据库升级。

### 后续操作

升级助手执行完毕后，您就可以使用 V3 版本了。 V2 网站目录下，请注意保留`public` 目录，此目录下有 V2 版本的用户头像、本地策略文件等数据，仍会被 V3 版本使用，其他文件可酌情删除。

### 升级失败后的操作

如果升级过程中出现异常，需要重试时，请恢复已备份的 V2 版本数据库，删除 V3 版本数据表并重启 V3 主程序后，再启动升级助手。再次升级过程中可能会出现缩略图、头像文件升级错误警告，可以忽略。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docsv3.cloudreve.org/manage/update/upgrade.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
