Windows Codex App 数据目录迁移到其他磁盘教程

Windows 版 Codex App 使用一段时间以后,会在用户目录中保存会话、配置以及其他运行数据。
默认情况下,Codex 的主要用户数据通常位于:
C:\Users\你的用户名\.codex
如果电脑只有一个磁盘,或者 C 盘空间比较充足,那么保持默认即可,没有必要额外修改。
但如果 C 盘空间比较紧张,或者希望把 Codex 长期产生的数据统一保存到 D 盘、E 盘等其他磁盘,可以通过 Windows 的 Junction(目录联接) 将 .codex 实际迁移到其他磁盘。
本文记录完整迁移过程。
文章目录
一、Codex 数据迁移原理
假设准备把 Codex 数据迁移到:
D:\Codex\Data
迁移完成以后,目录关系实际上是:
C:\Users\你的用户名\.codex
↓
Junction
↓
D:\Codex\Data
Codex 仍然访问原来的:
C:\Users\你的用户名\.codex
但 Windows 会自动把这些访问转向:
D:\Codex\Data
这样不需要重新安装 Codex,也不会改变日常使用方式。
二、将 .codex 数据迁移到其他磁盘
整个迁移过程可以概括为:
关闭 Codex App
↓
确认原 .codex 目录
↓
创建新的数据目录
↓
复制原 .codex 数据
↓
将原 .codex 改名为备份
↓
创建 Junction
↓
启动 Codex 并验证
↓
确认正常后删除旧备份
迁移时建议遵循一个原则:
先复制,确认新目录能够正常使用以后,再删除原数据。
不要一开始就直接剪切或者删除 .codex。
1. 完全关闭 Codex App
迁移之前先彻底退出 Codex App,避免迁移过程中程序继续修改 .codex 中的数据。
然后打开 PowerShell。
确认原来的 .codex 是否存在:
$old = Join-Path $HOME ".codex"
$old
Test-Path $old
正常情况下可能会看到:
C:\Users\你的用户名\.codex
True
其中 True 表示原来的 .codex 数据目录确实存在。
还可以查看目录中的内容:
Get-ChildItem "$HOME\.codex" -Force
如果希望先查看 .codex 大约占用了多少空间,可以执行:
"{0:N2} GB" -f (
(Get-ChildItem "$HOME\.codex" -Recurse -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum).Sum / 1GB
)
2. 创建新的数据目录
假设希望把 Codex 数据迁移到:
D:\Codex\Data
执行:
$new = "D:\Codex\Data"
New-Item -ItemType Directory -Force -Path $new
这里的目标路径可以根据自己的磁盘情况修改。
例如也可以使用:
E:\Codex\Data
或者其他希望保存 Codex 数据的位置。
3. 复制原来的 .codex 数据
推荐使用 Windows 自带的 robocopy:
robocopy "$old" "$new" /E /COPY:DAT /DCOPY:DAT /R:2 /W:1
其中:
/E:复制所有子目录,包括空目录;/COPY:DAT:复制文件的数据、属性和时间信息;/DCOPY:DAT:保留目录的数据、属性和时间信息;/R:2:复制失败时最多重试 2 次;/W:1:每次重试之间等待 1 秒。
复制完成以后,此时应该同时存在:
C:\Users\你的用户名\.codex
以及:
D:\Codex\Data
这是正常现象。
此时不要删除 C 盘中的原 .codex。
可以执行:
Get-ChildItem "D:\Codex\Data" -Force
确认原来的数据已经复制到新目录。
4. 将原 .codex 改名为备份
确认数据复制完成以后,把原目录先改名:
Rename-Item "$HOME\.codex" ".codex.backup"
此时原数据会暂时保存在:
C:\Users\你的用户名\.codex.backup
而原来的:
C:\Users\你的用户名\.codex
已经空出来,可以用于创建 Junction。
可以执行:
Test-Path "$HOME\.codex"
正常情况下应该返回:
False
此时不要删除:
C:\Users\你的用户名\.codex.backup
它仍然作为迁移失败时的备用数据。
5. 创建 Junction
现在创建目录联接。
执行:
New-Item `
-ItemType Junction `
-Path "$HOME\.codex" `
-Target "$new"
创建完成以后,Windows 用户目录中会重新出现:
C:\Users\你的用户名\.codex
但这一次它已经不是普通文件夹,而是一个 Junction。
实际数据仍然保存在:
D:\Codex\Data
可以通过下面的命令检查:
Get-Item "$HOME\.codex" |
Format-List FullName,LinkType,Target
正常情况下应该看到类似:
FullName : C:\Users\你的用户名\.codex
LinkType : Junction
Target : D:\Codex\Data
其中最重要的是:
LinkType : Junction
以及:
Target : D:\Codex\Data
只要这两项正确,就说明目录联接已经创建成功。
还可以使用:
cmd /c dir "$HOME" /AL
查看当前用户目录中的 Junction。
结果中可能会看到类似:
<JUNCTION> .codex [D:\Codex\Data]
6. 启动 Codex 并验证数据
现在重新打开 Codex App。
重点检查:
- 原来的会话是否仍然存在;
- 原来的项目是否可以继续使用;
- Codex 配置是否正常;
- 新建会话是否能够正常保存。
正常使用一段时间以后,可以执行:
Get-ChildItem "D:\Codex\Data" -Force
查看新目录中的文件。
如果使用 Codex 后,新目录中的文件持续出现新的写入或修改,就说明 Codex 已经正常通过 Junction 使用 D 盘中的数据。
也可以再次执行:
Get-Item "$HOME\.codex" |
Format-List FullName,LinkType,Target
确认 Junction 仍然正常指向:
D:\Codex\Data
7. 确认正常后删除旧备份
迁移完成以后,不建议第一次成功启动 Codex 就马上删除旧数据。
可以先正常使用一段时间。
确认:
- 原来的会话可以正常打开;
- 配置没有丢失;
- 新建会话能够正常保存;
D:\Codex\Data中的数据持续更新;- Codex App 没有出现异常。
确认没有问题以后,再删除原来的备份目录:
Remove-Item "$HOME\.codex.backup" -Recurse -Force
删除以后:
C:\Users\你的用户名\.codex.backup
占用的实际 C 盘空间才会真正释放。
需要注意,Remove-Item -Recurse -Force 属于直接删除操作,因此一定要在确认迁移成功以后再执行。
三、迁移完成后需要注意的问题
1. 为什么 C 盘里仍然能看到 .codex
迁移成功以后:
C:\Users\你的用户名\.codex
仍然存在,这是正常的。
因为现在的 .codex 是一个 Junction。
它本身位于:
C:\Users\你的用户名
但真正的数据已经保存在:
D:\Codex\Data
可以随时执行:
Get-Item "$HOME\.codex" |
Format-List FullName,LinkType,Target
进行确认。
只要看到:
LinkType : Junction
并且 Target 正确指向新的磁盘目录,就说明迁移仍然有效。
因此,即使资源管理器中仍然能看到 .codex,也不代表里面的数据仍然实际占用 C 盘空间。
2. Codex App 仍然可能在 C 盘产生少量缓存和运行文件
迁移 .codex 主要解决的是 Codex 的主要用户数据目录。
Codex App 自身仍然可能在 Windows 的:
%LOCALAPPDATA%
等位置保存应用缓存、日志以及运行组件。
这些内容与 .codex 中的会话和用户数据性质不同。
因此,没有必要为了让 C 盘完全不存在 Codex 文件,而继续强制迁移整个 Codex AppData 目录。
只要把 .codex 这种长期使用以后可能持续增长的数据目录迁移出去,就已经能够减少主要的 C 盘占用。
总结
Windows Codex App 的主要用户数据通常位于:
C:\Users\你的用户名\.codex
如果希望减少 C 盘长期占用,可以通过 Windows 的 Junction 将这个目录实际迁移到其他磁盘。
整个流程可以概括为:
关闭 Codex App
↓
复制 .codex 到其他磁盘
↓
将原 .codex 改名为备份
↓
创建 Junction
↓
启动 Codex 并验证
↓
确认正常后删除旧备份
核心命令为:
$old = Join-Path $HOME ".codex"
$new = "D:\Codex\Data"
New-Item -ItemType Directory -Force -Path $new
robocopy "$old" "$new" /E /COPY:DAT /DCOPY:DAT /R:2 /W:1
Rename-Item "$HOME\.codex" ".codex.backup"
New-Item `
-ItemType Junction `
-Path "$HOME\.codex" `
-Target "$new"
然后通过:
Get-Item "$HOME\.codex" |
Format-List FullName,LinkType,Target
确认结果类似:
FullName : C:\Users\你的用户名\.codex
LinkType : Junction
Target : D:\Codex\Data
确认 Codex 能够正常读取原有会话并继续保存新数据以后,再执行:
Remove-Item "$HOME\.codex.backup" -Recurse -Force
删除原来的 C 盘备份。
这样不需要重新安装 Codex,也不会改变日常使用方式,同时能够把 .codex 中长期积累的会话和用户数据实际保存到其他磁盘。
葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。
更多推荐
所有评论(0)