Vagrant 迁移 C 盘到其他盘完整指南
一、背景与问题
默认存储位置
- Windows:
C:\Users\用户名\.vagrant.d\ - macOS/Linux:
~/.vagrant.d/
为什么要迁移?
- C 盘空间不足(box 镜像通常 500MB-2GB+)
- 统一管理虚拟机文件
- 系统重装时保留数据
二、核心概念:VAGRANT_HOME
Vagrant 通过环境变量 VAGRANT_HOME 确定数据存储位置。
| 环境变量 | 作用 | 默认值 |
|---|---|---|
VAGRANT_HOME |
Vagrant 数据目录 | ~/.vagrant.d/ |
三、迁移步骤(Windows)
步骤 1:准备新目录
# 在 D 盘创建新目录(示例)
mkdir D:\VagrantData\.vagrant.d
步骤 2:停止所有虚拟机
# 查看运行中的虚拟机
vagrant global-status
# 停止指定虚拟机(如有 running 状态)
vagrant halt <虚拟机ID>
# 或停止所有
vagrant halt
步骤 3:迁移已有数据
方案 A:命令行方式(推荐)
# 复制 boxes 到新目录
xcopy C:\Users\%USERNAME%\.vagrant.d\* D:\VagrantData\.vagrant.d\ /E /I /H
# 确认复制成功后,删除原目录
rmdir /S /Q C:\Users\%USERNAME%\.vagrant.d
方案 B:图形界面方式
- 打开
C:\Users\用户名\.vagrant.d\ - 复制所有文件夹到
D:\VagrantData\.vagrant.d\ - 确认无误后删除原目录
步骤 4:设置环境变量
方式 1:命令行设置(当前用户)
setx VAGRANT_HOME "D:\VagrantData\.vagrant.d"
⚠️ 注意:去掉
/M参数,否则需要管理员权限
方式 2:图形界面设置
Win + R→ 输入sysdm.cpl→ 回车- "高级" → "环境变量"
- "用户变量" → "新建"
- 变量名:
VAGRANT_HOME - 变量值:
D:\VagrantData\.vagrant.d
- 变量名:
- 确定保存
方式 3:管理员命令(系统级)
# 以管理员身份运行 CMD
setx VAGRANT_HOME "D:\VagrantData\.vagrant.d" /M
步骤 5:验证迁移
# 必须重新打开 CMD 窗口!
echo %VAGRANT_HOME%
# 预期输出:D:\VagrantData\.vagrant.d
# 查看 box 列表
vagrant box list
# 应该显示之前安装的 boxes
四、目录结构说明
迁移后的完整结构:
D:\VagrantData\.vagrant.d\
├── boxes\ # Box 镜像存储(主要占用空间)
│ ├── centos-VAGRANTSLASH-7\
│ │ └── 2004.01\
│ │ └── virtualbox\
│ │ ├── box.ovf
│ │ ├── centos-7-x86_64-disk001.vmdk # 实际磁盘文件
│ │ └── metadata.json
│ │
│ └── ubuntu-VAGRANTSLASH-trusty64\
│ └── 20191107.0.0\
│ └── virtualbox\
│ └── ...
│
├── data\ # 运行时数据
├── gems\ # 插件
├── insecure_private_key # SSH 密钥
└── tmp\ # 临时文件
五、常见问题与解决
Q1:设置环境变量后 vagrant box list 为空?
原因:CMD 窗口未重新打开,环境变量未生效。
解决:
# 关闭所有 CMD 窗口,重新打开
# 或临时设置(仅当前窗口有效)
set VAGRANT_HOME=D:\VagrantData\.vagrant.d
vagrant box list
Q2:setx 命令提示"拒绝访问注册表路径"?
原因:使用了 /M 参数需要管理员权限。
解决:
# 去掉 /M,设置用户级变量
setx VAGRANT_HOME "D:\VagrantData\.vagrant.d"
Q3:move 命令提示"系统找不到指定的路径"?
原因:目标目录不存在。
解决:
# 先创建目标目录
mkdir D:\VagrantData\.vagrant.d\boxes
# 再执行移动或复制
Q4:只想迁移 boxes,保留其他数据在 C 盘?
方案:使用符号链接(高级)
# 1. 以管理员身份运行 CMD
# 2. 移动 boxes 目录
move C:\Users\%USERNAME%\.vagrant.d\boxes D:\VagrantBoxes
# 3. 创建符号链接
mklink /D C:\Users\%USERNAME%\.vagrant.d\boxes D:\VagrantBoxes
六、跨平台参考
macOS / Linux
# 1. 创建新目录
mkdir -p /Volumes/Data/vagrant/.vagrant.d
# 2. 复制数据
cp -r ~/.vagrant.d/* /Volumes/Data/vagrant/.vagrant.d/
# 3. 设置环境变量(添加到 ~/.bashrc 或 ~/.zshrc)
export VAGRANT_HOME=/Volumes/Data/vagrant/.vagrant.d
# 4. 生效
source ~/.bashrc
七、最佳实践
| 建议 | 说明 |
|---|---|
| ✅ 定期清理无用 box | vagrant box prune |
| ✅ 使用国内镜像加速 | 避免下载缓慢 |
| ✅ 迁移前备份重要数据 | 防止误操作 |
| ✅ 统一使用 D 盘存储 | 便于管理和备份 |
| ❌ 不要频繁切换 VAGRANT_HOME | 会导致 box 重复下载 |
八、快速命令参考
# 查看当前 Vagrant 目录
echo %VAGRANT_HOME%
# 查看已安装 boxes
vagrant box list
# 查看 boxes 详细信息(含路径)
vagrant box list -i
# 清理无用 boxes
vagrant box prune
# 删除指定 box
vagrant box remove centos/7
九、总结
迁移 Vagrant 到其他盘的核心就三步:
- 停虚拟机 →
vagrant halt - 移数据 →
xcopy或手动复制 - 改环境变量 →
setx VAGRANT_HOME "新路径"
关键:设置环境变量后必须重新打开 CMD 才能生效!

浙公网安备 33010602011771号