---
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/caf28e74-2121-4b75-9ced-f54d94979684"
publicId: "caf28e74-2121-4b75-9ced-f54d94979684"
---

# 本地存储到本地存储-针对租户迁移

### 一、获取租户中待迁移本地存储根目录

流程：后台管理中心 → 文件设置  → 选取待迁移的存储实例 → 获取存储根目录

![CleanShot 2025-04-08 at 10.36.32.gif](https://weapp.eteams.cn/api/file/preview?fileId=1120470582924165167&type=imgs)

### 二、租户切换到新本地存储

> 新本地存储实例需要到后台管理中心 → 文件设置 →  存储设置 → 存储实例中手动创建

步骤：后台管理中心 → 文件设置 → 存储规则 → 默认存储规则绑定到新本地存储实例

![CleanShot 2025-04-08 at 15.14.49.gif](https://weapp.eteams.cn/api/file/preview?fileId=1120542244440694819&type=imgs)

### 三、原本地存储物理文件迁移到新本地存储

将原本地存储根目录下（不包含根目录）所有文件、文件夹，保持原目录结构不变，迁移到新本地存储根目录下

### 四、更新表数据

#### a. 获取租户最新存储规则版本ID（**latestVersionId**）

1. 步骤：后台管理中心 → 文件设置 → 存储设置 → 存储规则 → 打开浏览器F12查看接口 → 编辑默认存储规则触发接口请求 → 获取存储规则版本ID

![CleanShot 2025-04-08 at 10.58.55.gif](https://weapp.eteams.cn/api/file/preview?fileId=1120476333876985883&type=imgs)

F12需要查看的接口和返回值中的字段

```http
api/file/storage/rule/frontComp/ruleForm
```

![image.png](https://weapp.eteams.cn/api/file/preview?fileId=1120476398397743182&type=imgs)

#### b. 执行脚本

> - sql中的#{oldRootPath}占位符表示根据 【一、获取租户中待迁移本地存储根目录】获取到的原本地存储根目录
> - sql中#{newRootPath}占位符表示根据【二、租户切换到新本地存储】配置的新本地存储根目录
> - sql中#{ruleVersionId}占位符表示根据a中获取到的当前租户最新存储规则版本ID
> - sql中#{tenantKey}占位符表示当前租户的租户key

#### a. oracle

```sql

UPDATE file_storage_info
SET file_path = '#{newRootPath}'+SUBSTR(file_path, LENGTH('#{oldRootPath}') + 1, LENGTH(file_path)),rule_version_id = #{ruleVersionId}
WHERE file_path LIKE '#{oldRootPath}%' and tenant_key = '#{tenantKey}';
```

#### b. mysql

```sql
UPDATE file_storage_info
SET file_path = CONCAT('#{newRootPath}', SUBSTRING(file_path, LENGTH('#{oldRootPath}') + 1)),rule_version_id = #{ruleVersionId}
WHERE file_path LIKE '#{oldRootPath}%' and tenant_key = '#{tenantKey}';
```

#### c. sqlserver

```sql
UPDATE file_storage_info
SET file_path = '#{newRootPath}' + SUBSTRING(CAST(file_path AS NVARCHAR(MAX)), LEN('#{oldRootPath}') + 1,
 LEN(CAST(file_path AS NVARCHAR(MAX)))),rule_version_id = #{ruleVersionId}
WHERE file_path LIKE '#{oldRootPath}%' and tenant_key = '#{tenantKey}';
```

#### d. postgresql

```sql
UPDATE file_storage_info
SET file_path = '#{newRootPath}' || SUBSTR(file_path, LENGTH('#{oldRootPath}') + 1, LENGTH(file_path)),rule_version_id = #{ruleVersionId}
WHERE file_path LIKE '#{oldRootPath}%'  and tenant_key = '#{tenantKey}';
```

### 五、迁移示例

#### a. 将本租户附件迁移到/nfs/data下载

1. 通过【一、获取租户中待迁移本地存储根目录】查询得到原本地存储根路径：/home/data
2. 通过【二、租户切换到新本地存储】将当前租户存储切换到 /nfs/data
3. 直接将/home/data目录下所有文件、文件夹全量复制到/nfs/data下
4. 当前租户key是：t1zmsdus3l
5. 获取租户最新存储规则版本ID（**latestVersionId**）: 1120530175587590145
6. 假设数据库是mysql，执行以下刷新数据sql
  
  ```sql
  # mysql
  UPDATE file_storage_info
  SET file_path = CONCAT('/nfs/data', SUBSTRING(file_path, LENGTH('/home/data') + 1)),rule_version_id = 1120530175587590145
  WHERE file_path LIKE '/home/data%' and tenant_key = 't1zmsdus3l';
  ```
