步骤 | 路径示例 | 备注 | |
---|---|---|---|
1 | 关闭所有以太坊客户端 | 含 Geth、Nethermind、Besu、Lighthouse、Prysm 等 | |
2 | 备份原数据 | C:\Users\<用户名>\AppData\Local\Ethereum\geth\chaindata | 复制 chaindata、keystore、nodes 三个文件夹到移动硬盘 |
3 | 选择新盘 | D:\EthereumData | 剩余空间 ≥ 1.2 TB(2024-06 全节点) |
4 | 剪切数据 | 将 chaindata、keystore、nodes 剪切到 D:\EthereumData | 保留原 keystore 副本,防止误删 |
5 | 建立符号链接 | mklink /J "C:\Users\<用户名>\AppData\Local\Ethereum\geth\chaindata" "D:\EthereumData\chaindata" | 管理员命令行执行,路径含空格需加引号 |
6 | 对 keystore 做同样链接 | mklink /J "C:\Users\<用户名>\AppData\Roaming\Ethereum\keystore" "D:\EthereumData\keystore" | 钱包地址文件必须链接,否则无法解锁账户 |
7 | 校验链接 | dir C:\Users\<用户名>\AppData\Local\Ethereum\geth\chaindata | 若返回 D:\EthereumData\chaindata 内容则成功 |
8 | 重启客户端 | geth --http --datadir "C:\Users\<用户名>\AppData\Local\Ethereum" | 启动后区块高度继续增长即迁移完成 |
9 | 删除旧副本 | 确认同步无异常后,删除 C 盘残留 chaindata.bak | 节省空间,keystore 副本建议保留加密 U 盘 |
10 | 更新快捷方式 | 桌面 Geth 快捷方式“起始位置”改为 D:\EthereumData | 防止下次误点重新同步 C 盘 |
常见错误排查
- 同步回滚:未关闭客户端直接剪切文件,导致数据库损坏,需重新同步。
- 权限不足:符号链接需管理员命令行,普通 PowerShell 会报“拒绝访问”。
- 路径写错:链接目标路径末尾多一个空格,客户端会提示“missing chaindata”。
进阶:把主网与测试网分开
主网数据继续放 D:\EthereumData\mainnet,Goerli 测试网新建 D:\EthereumData\goerli,再分别建符号链接,避免两者混用同一目录。
固态硬盘优化
若新盘为 SATA SSD,把 Windows 电源管理“关闭硬盘”设为 0,防止节点在空闲时掉盘;NVMe 盘无需额外设置。
远程备份脚本
每周执行 robocopy D:\EthereumData\keystore \NAS\ETH\keystore /mir /r:1 /w:1,将密钥文件夹镜像到局域网 NAS,避免单点故障。