使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台

Posted

技术标签:

【中文标题】使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台【英文标题】:Using p4 zip and unzip to export files from one perforce server to another 【发布时间】:2020-09-05 20:01:34 【问题描述】:

我试图在我的 depot 文件夹中从 2015.2 到 2019 perforce 服务器导出文件及其修订历史。另外,我希望 perforce 在我的新服务器上创建新用户,对应于我原始 2015 回购中的提交者/提交者.

Perforce 复制对于我当前的任务来说看起来有点过头了,然后我在 perforce 的 website 上看到了这篇文章,其中提到了 P4 zip。

这看起来可以解决我的问题,但这篇文章有一些我无法理解的问题。

假设我正在从 server1_ip:port 移动数据 --> server2_ip:port

我目前正在执行这些步骤

    使用

    制作要复制的文件夹的 zip p4 remote my_remote_spec,设置 Address: server1_ip:port DepotMap://depot/... //depot2/...

    p4 -p server1_ip:port zip -o test.zip -r my_remote_spec -A //depot/...。但是在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。

另外,当我尝试使用超级用户时,即使没有提示任何错误,我也找不到 test.zip。

    上面的命令不是应该在我运行它的目录中生成一个 zip 文件吗? 是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令? 最后,在从运行在 1666 和 1777 上的服务器传输文件中提到的文件为什么是第三个端口 1667。

【问题讨论】:

【参考方案1】:

在这一步我得到权限被拒绝错误。这对我来说很奇怪,因为用户虽然不是超级/管理员可以访问我要求压缩的文件。

这是预期的:

C:\Perforce\test>p4 help zip

    zip -- Package a set of files and their history for use by p4 unzip

    ...

        The zip command requires super permission granted by p4 protect.

上面的命令不是应该在我运行它的目录中生成一个 zip 文件吗?

类似于p4 admin checkpoint,压缩文件被写入服务器机器(相对于服务器根目录,如果你不指定绝对路径),而不是被传输到本地客户端目录。这在文档中没有明确说明(这似乎是一个疏忽),但是如果您查看运行 zip 的服务器的根目录,您应该在那里找到您的 test.zip

是否应该在第二台服务器的用户 p4 登录后运行 unzip 命令?

是的,每当您对特定服务器运行命令时,您都需要登录到该服务器。对于p4 unzip,您至少需要第二台服务器上的admin 权限。

最后,从文件中为什么在从 1666 和 1777 上运行的服务器传输文件时提到了第三个端口 1667。

我很确定这是一个错字;写这篇文章的人开始使用端口 1666 和 1777,中途改变了主意,并且没有校对。 :)

【讨论】:

谢谢,这很有帮助。一个小问题,有问题的两台服务器在不同的机器上,因此在第二台服务器上解压缩之前,我应该将 test.zip 放在第二台服务器的根目录中吗?另外,为了清楚起见,上面答案中的服务器根目录是指 P4ROOT? 以上都同意! 解压前一切顺利,解压时我收到提示Cannot import '//depot/path/to/a/file/in/depot.java' because it is in an unknown depot的以下消息。由于此解压缩操作是在新/空服务器上完成的,因此我还创建了 '//depot/path/to/a/file/in/depot/' 排序的空目录,但此错误仍然存​​在 您可能需要运行p4 depot depot 来创建depot depot? 我的目标是,如果目录/软件仓库一开始不存在,它们就会被创建。

以上是关于使用 p4 zip 和 unzip 将文件从一台 perforce 服务器导出到另一台的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令(十六) 压缩或解压缩文件和目录 zip unzip

linux unzip和zip

LinuxLinux中zip和unzip

ubuntu zip/unzip使用

linux 下 zip unzip压缩与解压

zip压缩和unzip解压缩