- 从原MinIO启动目录中复制mc.exe、minio.exe文件到新目录(假设目录是D:\minio)中,配置启动脚本,设定端口号为9002(避开原服务9000端口),示例脚本如下
# start.ps1
# 1. 设置管理员用户名和密码
$env:MINIO_ROOT_USER = "admin"
$env:MINIO_ROOT_PASSWORD = "123456"
# 2. 指定数据目录路径 (如果不存在会自动创建)
$dataDir = "D:\minio\data"
# 3. 启动 MinIO 服务
.\minio.exe server $dataDir --address ":9002" --console-address ":9003"
- 使用脚本启动新的MinIO服务,原MinIOn服务保持启动,在新服务的目录中启动命令提示符
- 创建别名:执行以下命令(示例命令,需要按照实际情况调整)
:: 语法:.\mc.exe alias set 别名 http://<旧MinIO IP>:9000 管理员用户名 管理员密码
:: 这里用old代表原MinIO,temp代表新MinIO
.\mc.exe alias set old http://localhost:9000 admin 123456
.\mc.exe alias set temp http://localhost:9002 admin 123456
- 创建桶:需要在新的MinIO中创建需要迁移文件的老MinIO同名桶,这里用box作为桶名示例
:: 语法:.\mc.exe mb 目标MinIO别名/桶名
.\mc.exe mb temp/box
- 迁移方式
- 目录迁移
:: 语法:.\mc.exe mirror --overwrite 原MinIO别名/桶名/要迁移的目录名/ 新MinIO别名/同名桶名/同名要迁移的目录名/
.\mc.exe mirror --overwrite old/box/files1/ temp/box/files1/
- 单文件迁移
:: 语法:.\mc.exe cp 原MinIO别名/桶名/要迁移的目录名/要迁移的文件名 新MinIO别名/同名桶名/同名要迁移的目录名/同名要迁移的文件名
.\mc.exe cp old/box/files1/fileName1 temp/box/files1/fileName1
- 批量迁移:如果文件或者文件夹比较多,可以用批处理脚本执行,创建文本文件,编辑内容后另存为
migrate.ps1到mc.exe同目录,示例$prefixes = @(
"box/upload/20260214/c585e1ecfb6340db728c18f86f514cc1.mp4",
"box/upload/20260214/367d62d1315edb76192121866a373a0c.mp4",
"box/upload/20260924/de8fd0e465d7073971bc39f7c5ee09f5.jpg"
)
foreach ($p in $prefixes) {
Write-Host "正在迁移: $p"
.\mc.exe cp "old/$p" "temp/$p"
}
Read-Host "按回车键退出"
- 运行批处理文件
:: 如果是cmd命令窗,执行下面一行命令切换到powershell
powershell
:: 运行批处理文件
.\migrate.ps1
:: 如果提示策略限制,先执行以下命令,再运行批处理文件
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- (可选)设置新MinIO的桶为public
:: 语法:.\mc.exe anonymous set public 新MinIO别名/桶名
.\mc.exe anonymous set public temp/box
- 清理别名:新创建的别名,使用完毕后务必及时清理
:: 查看别名列表
.\mc.exe alias list
:: 删除别名
:: 语法:.\mc.exe alias rm 需要删除的别名
.\mc.exe alias rm old
.\mc.exe alias rm temp
:: 删完再验证
.\mc.exe alias list
- 停止新MinIO服务后,将整个MinIO目录打成压缩包,复制到新服务器中,解压
- 需要调整启动脚本start.ps1中
$dataDir、--address、--console-address
- 调整完毕后,运行启动脚本,可以从web管理端检查迁移的文件是否可用