从 AWS EC2 服务器删除 Perforce depot 不会释放 EC2 上的空间

问题描述 投票:0回答:1

我一直在 AWS 上的免费套餐 (30GB) EC2 实例上运行 Perforce 服务器。我将它用于虚幻引擎中的业余爱好项目。

我想完全删除一个项目及其仓库,以释放空间。我过去曾成功完成此操作,因此尝试了相同的方法:首先按照文档的说明从 P4Admin 中(使用上下文菜单)在软件仓库上运行“obliterate”。

但是当我尝试删除软件仓库本身时,我收到错误消息,声称软件仓库中仍然有文件。但我看不到任何文件,资源管理器和仓库树中的文件夹完全是空的。

它还告诉我,我可以通过运行“p4 depot -d -f depotname”来绕过此错误,我是通过 Windows CLI 执行的。它报告成功,并且仓库现在确实从 P4V 视觉客户端中消失了,并且我的计算机上的该文件夹完全是空的。

但是,我的 EC2 实例仍然显示 6.8/30GB 正在使用(删除前的使用量)。 我不知道如何让它识别或“同步”这个仓库已被删除的事实。

当我在 EC2 上列出文件时,我看到以下内容: ls 命令的结果

以蓝色突出显示的“仓库”我只能假设是应该删除的仓库,但它仍然在那里。

使用 EC2 本身运行任何 p4 命令会得到:

-bash: p4: command not found

请给 ELI5 级别的任何建议。我没有服务器管理方面的背景。感谢您的帮助。

amazon-web-services amazon-ec2 version-control perforce unreal-engine5
1个回答
0
投票

但是当我尝试删除软件仓库本身时,我收到错误消息,声称软件仓库中仍然有文件。但我看不到任何文件,资源管理器和仓库树中的文件夹完全是空的。

仓库有一大堆不同的“视图”(即,当您谈论“仓库文件”时,您可能正在谈论不同的文件集),听起来您可能在尝试诊断问题时正在查看其中一个文件其他。 这是我认为相关的三个:

  1. 您当前已同步到本地工作区的仓库文件。 (当您说“资源管理器中的文件夹”时,我假设您正在谈论 Windows 工作区中的文件,而不是实际 EC2 服务器上的文件。)这只是实际仓库文件的一个(或没有)修订版,具体取决于关于您具体同步的内容。

  2. 在服务器元数据中跟踪的文件在逻辑上属于该仓库。 这就是您在 P4V 中查看“depot 树”时,或者在命令行中运行

    p4 files //depot/...
    时看到的内容。 每个仓库文件都有多个修订版。

  3. 服务器上的“存档文件”是实际文件内容的真实来源。 这些是实际占用 EC2 上空间的文件。有时,一个仓库中的文件实际上是来自另一个不同仓库的引用(“惰性副本”)——

    //depot/...
    可能拥有一百万个文件在仓库树中,并且在相应的服务器文件夹中根本没有存档文件 - 反之亦然!

如果您删除了一个仓库,然后无法删除它,因为仍然存在存档文件(我认为实际的错误消息将指定“存档文件”而不是“仓库文件”——这是一个重要的细节!),它意味着其他某个软件仓库拥有引用已删除软件仓库的存档文件的文件;如果您要删除该软件仓库,这些引用就会失效,并且您最终会丢失您没有尝试删除的其他软件仓库的内容。

所有这些解释都已完成,这里是修复方法(假设您正在尝试删除名为

depot
的仓库):

p4 snap //... //depot/...
p4 depot -d depot
rm -rf depot

p4 snap
命令将“惰性副本”转换为实际的重复存档;这基本上只是将服务器上
depot
目录下的 8GB 复制到任何其他有依赖项的仓库中。 如果您打算 snap 刚刚“捕捉”的文件夹,则您
想要使用该
rm -rf
命令。 一旦您拍摄了档案,
p4 depot -d
就不应该再抱怨现有文件了。

实际的

rm -rf
需要在EC2上运行。 捕捉实际上并不删除存档文件,它只是复制它们,因此您需要从文件系统中删除它们。 一旦仓库被捕捉并删除,这是完全安全的。

© www.soinside.com 2019 - 2024. All rights reserved.