Windows Server 2016 默认缺少部分基础工具,需提前配置:
- 启用 Telnet 客户端(用于测试网络连通性):
- 打开「服务器管理器」→「添加角色和功能」→ 勾选「Telnet 客户端」→ 完成安装
- 安装解压工具(用于解压 rclone 安装包):
- 启用 PowerShell 5.1+(默认已安装,验证版本):
$PSVersionTable.PSVersion
telnet 192.168.1.100 8080
Test-NetConnection 192.168.1.200 -Port 443
- 若提示「无法打开到主机的连接」,需检查 IDC 交换机端口放行规则
- 打开「控制面板」→「Windows Defender 防火墙」→「高级设置」
- 新建「入站规则」:
- 规则类型:端口 → TCP → 特定本地端口(输入 80,443,8080 等 S3 实际端口)
- 操作:允许连接 → 适用场景(域、专用、公用,IDC 环境可全选)
- 名称:Rclone-S3-Migration
- 重复步骤 2 创建「出站规则」(端口与入站一致)
Windows Server 2016 默认 TCP 配置不适应 IDC 高带宽场景,通过注册表优化:
- 打开「运行」→ 输入
regedit打开注册表编辑器
- 定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 新建以下 DWORD(32 位)值:
- 重启服务器使注册表生效
- 访问 rclone 官网下载 Windows 版本:https://rclone.org/downloads/
- 选择「Windows amd64 - ZIP」(适配 64 位 Windows Server 2016)
- 保存到服务器本地(建议路径:
C:\Software\)
- 用 7-Zip 解压安装包到指定目录(推荐:
C:\rclone\)
- 解压后目录结构:
C:\rclone\rclone.exe(核心程序)
- 配置系统环境变量(使全局可调用 rclone):
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」→「Path」中添加:
C:\rclone\
- 点击「确定」保存(需关闭已打开的 CMD/PowerShell 生效)
- 打开「管理员 PowerShell」(必须管理员权限,避免权限不足)
- 执行以下命令验证版本:
- 成功输出示例(显示版本号及系统信息):
rclone v1.65.2
- os/version: Microsoft Windows Server 2016 Standard 1607 (64 bit)
- os/kernel: 10.0.14393.6590 (x86_64)
- os/type: windows
- os/arch: amd64
rclone 配置文件默认路径:C:\Users\[用户名]\.config\rclone\rclone.conf,通过rclone config向导配置,步骤如下:
在管理员 PowerShell 中执行:
- 界面提示:
e/n/d/r/c/q> (输入n创建新远程)
name> sangfor-s3
Storage> 3
11 / Other S3 Compatible Storage
\ (s3)
Storage> 11
Option endpoint.
S3 endpoint URL.
Enter a value.
endpoint> http://192.168.1.100:8080
Option region.
Region to connect to.
Leave blank if you are using an S3 clone and not sure.
Enter a value. Press Enter to leave empty.
region>
Option access_key_id.
AWS Access Key ID.
Enter a value.
access_key_id> [深信服迁移用户AK]
Option secret_access_key.
AWS Secret Access Key (password).
Enter a value.
secret_access_key> [深信服迁移用户SK]
Option force_path_style.
Force path style access (true/false).
Enter a boolean value (true or false).
force_path_style> true
Edit advanced config?
y/n> n
Keep this "sangfor-s3" remote?
y/n> y
重复rclone config流程,创建名为huawei-s3的远程,核心差异如下:
name> huawei-s3
Storage> 3 → 11
endpoint> http://192.168.1.200:443
access_key_id> [华为迁移用户AK]
secret_access_key> [华为迁移用户SK]
force_path_style> true
Keep this "huawei-s3" remote?
y/n> y
e/n/d/r/c/q> q
rclone lsd sangfor-s3:
rclone lsd huawei-s3:
rclone ls sangfor-s3:test-bucket | Select-Object -First 5
直接编辑 rclone 配置文件,避免每次命令行重复输入参数:
- 打开路径:
C:\Users\[用户名]\.config\rclone\rclone.conf
- 在
[sangfor-s3]和[huawei-s3]段添加以下优化参数:
[sangfor-s3]
type = s3
endpoint = http://192.168.1.100:8080
access_key_id = [你的AK]
secret_access_key = [你的SK]
force_path_style = true
transfers = 32 # 并发传输数(IDC 10Gbps推荐32-64)
checkers = 64 # 校验并发数(transfers的2倍)
s3-chunk-size = 256M # 大文件分块大小
buffer-size = 128M # 传输缓存(利用服务器内存加速)
[huawei-s3]
type = s3
endpoint = http://192.168.1.200:443
access_key_id = [你的AK]
secret_access_key = [你的SK]
force_path_style = true
transfers = 32
checkers = 64
s3-chunk-size = 256M
buffer-size = 128M
Windows 无 tmux 工具,通过「任务计划程序」创建持久化任务:
- 打开「任务计划程序」→「创建基本任务」
- 名称:Rclone-Migration → 触发器:「当我登录时」
- 操作:「启动程序」→ 程序 / 脚本:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- 添加参数:
-NoExit -Command "cd C:\rclone\logs; rclone copy sangfor-s3:prod-bucket huawei-s3:prod-bucket --fast-list --progress --log-file migration.log"
- 勾选「不管用户是否登录都要运行」→ 输入管理员密码 → 完成
- 如需中断,在任务计划程序中「结束任务」;如需恢复,直接运行任务
创建批处理文件migrate_all_buckets.bat,实现多桶并行迁移(IDC 环境优势):
@echo off
setlocal enabledelayedexpansion
:: 列出深信服S3所有桶,保存到buckets.txt
rclone lsd sangfor-s3: | findstr /r /c:"[0-9][0-9]:[0-9][0-9]:[0-9][0-9]" > buckets.txt
:: 循环读取桶名并并行迁移
for /f "tokens=5 delims= " %%b in (buckets.txt) do (
echo 开始迁移桶:%%b
start "" powershell -Command "rclone copy sangfor-s3:%%b huawei-s3:%%b --fast-list --log-file C:\rclone\logs\migrate_%%b.log"
)
echo 所有桶迁移任务已启动,日志保存在C:\rclone\logs\
pause
- 用法:双击运行脚本,或在管理员 CMD 中执行
migrate_all_buckets.bat
- 注意:提前创建
C:\rclone\logs\目录存放日志
rclone copy sangfor-s3:prod-bucket huawei-s3:prod-bucket `
--fast-list --progress `
--log-file C:\rclone\logs\full_migrate_prod.log `
--retries 10
- 参数说明:
--progress显示实时进度,--fast-list提升元数据读取速度(内存充足时启用)
rclone sync sangfor-s3:prod-bucket huawei-s3:prod-bucket `
--delete-after `
--log-file C:\rclone\logs\incremental_sync_prod.log `
--bwlimit 50M
--delete-after:确保目标端仅保留源端存在的文件
rclone check sangfor-s3:prod-bucket huawei-s3:prod-bucket `
--checkers 64 `
--log-file C:\rclone\logs\verify_prod.log
$buckets = rclone lsd sangfor-s3: | Select-Object -ExpandProperty Name
foreach ($bucket in $buckets) {
rclone check sangfor-s3:$bucket huawei-s3:$bucket --checkers 64 --log-file "C:\rclone\logs\verify_$bucket.log"
}
- 原因:环境变量未配置或未生效
- 解决:重新配置环境变量,关闭所有 CMD/PowerShell 后重新打开;或直接使用绝对路径
C:\rclone\rclone.exe version验证
- 原因:Windows 防火墙未放行端口,或 AK/SK 错误
- 解决:
- 检查防火墙入站 / 出站规则是否包含 S3 端口
- 重新执行
rclone config验证 AK/SK 正确性
- 确保深信服 / 华为 S3 的 IAM 用户已授予
ListBucket、GetObject(源端)、PutObject(目标端)权限
- 原因:TCP 参数未优化,或网卡未启用万兆模式
- 解决:
- 确认注册表 TCP 优化项已配置并重启服务器
- 检查网卡速率:右键「网络连接」→「属性」→「配置」→「高级」→「链接速度和双工模式」→ 选择「10Gbps 全双工」
- 调整
transfers参数至 64,s3-chunk-size至 512M(10Gbps 环境)
- 原因:服务器休眠或任务计划程序权限不足
- 解决:
- 禁用休眠:控制面板→电源选项→选择电源计划→更改计划设置→「使计算机进入睡眠状态」设为「从不」
- 任务计划程序中,将任务设置为「最高权限运行」
Windows Server 2016 环境下 rclone 部署核心是适配 Windows 系统特性(环境变量、注册表优化、批处理脚本),结合 IDC 内网高带宽优势,重点关注:
- 内网 endpoint 配置(避免公网传输)
- TCP 参数与网卡聚合优化(提升传输速度)
- 任务持久化(防止 Windows 任务中断)
- 日志集中管理(便于问题排查)
下一步行动:
- 执行小规模测试(100GB 数据),验证配置正确性和传输速度
- 优化
transfers、s3-chunk-size等参数,适配 IDC 实际带宽
- 在业务低峰期(如周末)启动全量迁移,通过任务计划程序监控
- 迁移完成后执行完整数据验证,确保业务平滑切换至华为 S3
https://zhuanlan.zhihu.com/p/139200172
https://blog.csdn.net/qq_22903531/article/details/131434705
https://gear.hermygong.com/p/rclone-%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/318389.html