如何删除AWS EC2实例中Perforce提交中断后残留的未识别文件?
解决Perforce未识别上传文件、磁盘占用异常的方案
清理异常变更与临时文件
- 登录EC2实例的Perforce服务器端,先停掉服务:
p4 admin stop(确保无其他用户操作) - 找到Perforce服务器根目录(通常为
/opt/perforce/server/,以搭建时配置为准),进入storage/temp和storage/pending目录,删除其中所有文件——这些是提交中断遗留的临时数据,未被Perforce纳入仓库管理 - 重启服务:
p4 admin start - 回到客户端,查询自身待提交的变更列表:
p4 changes -u <你的用户名> -s pending,定位到中断的变更列表号 - 撤销该变更列表内的所有文件:
p4 revert -c <变更列表号> //... - 强制同步本地与仓库状态:
p4 sync -f //...
排查仓库实际占用情况
- 在服务器端执行
p4 diskspace,该命令会统计Perforce实际管理的所有数据大小,将结果与EC2中看到的磁盘总占用量对比,差值即为未被识别的垃圾数据 - 前往Perforce服务器目录下,检查
depot以外的文件夹(如tmp或其他临时目录),手动删除不属于仓库的文件——注意不要触碰db.*开头的数据库文件,这是Perforce的核心系统数据
快照恢复的正确操作
- 若上述方法无效,选择提交前的快照恢复时,仅操作数据卷,不要改动系统卷:
- 先停止Perforce服务:
p4 admin stop - 将当前服务器的所有数据目录打包备份,避免恢复失败无法回滚
- 按照AWS教程替换存储仓库数据的EBS卷(Helix Core的配置在系统卷,不改动它就不会破坏服务连接)
- 恢复完成后重启服务:
p4 admin start,客户端重新连接验证仓库状态
- 先停止Perforce服务:
后续提交避坑建议
- 大项目初始提交不要一次性完成,按目录拆分为多个变更列表分批提交,降低中断风险
- 提交前执行
p4 verify -q //...,检查本地文件与仓库的一致性,避免无效提交 - 开启服务器日志便于后续排查问题:
p4 configure set serverlog.file=logs/server.log
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

