JFrog帮助中心

我们的新传送门很快就要来了!
文档+知识库







概述

JFrog Cloud提供了与自托管JFrog平台部署(JPD)相同的前沿功能,而无需管理数据库和系统的开销。如果您是JFrog自托管的现有客户,您可能希望转移到JFrog Cloud以简化操作。JFrog提供了一种解决方案,允许您轻松地将自托管的JPD复制到JFrog云JPD。
Artifactory Transfer解决方案,目前只传输JFrog Artifactory的配置和数据。该解决方案目hth华体会最新官方网站前不支持JFrog Xray、Distribution和JFrog Pipelines等其他产品。
在本页中,我们将源自托管实例作为源实例,将目标JFrog Cloud实例作为目标实例。

Artifactory版本支持

Artifactory Transfer解决方案支持任何版本的Artifactory 7。x和Artifactory 6.23.21及以上版本。

页面内容

转移阶段

转让过程包括两个阶段,你必须按照以下顺序执行:

  1. 配置传输:将配置实体(如用户、权限和存储库)从源实例转移到目标实例。
  2. 文件传输:将存储在源实例存储库中的文件(二进制文件)传输到目标实例存储库。

    • 远程存储库缓存的文件不会被传输。
    • Artifactory的垃圾桶内容不会被转移。

在使用源实例时,可以执行这两个步骤。在传输进行期间,源实例上不需要停机。


限制

在开始迁移过程之前,需要记住以下限制

  1. 启用档案搜索JFrog Cloud不支持该特性。
  2. Artifactory System属性不会转移,转移后将应用JFrog Cloud默认值。
  3. JFrog Cloud不支持用户插件。
  4. JFrog云不支持Artifact Cold Storage。
  5. 远程存储库缓存中的工件不会被传输。
  6. 在没有联邦成员的情况下传输联合存储库。转移完成后,您需要重新配置联邦联合存储库文档
  7. 名称中包含点的Docker存储库在JFrog Cloud中是不允许的。
  8. JFrog Cloud不支持值大于2.4K字符的工件属性。这样的属性通常可以在柯南工件中看到。在这种情况下,工件将在没有属性的情况下传输。在传输结束时,包含这些工件的报告将对您可用。
  9. 文件传输过程允许在进程启动后传输在源实例上创建或修改的文件。但是,进程启动后在源实例上删除的文件不会被进程删除在目标实例上。
  10. 文件传输过程允许在进程启动后传输在源实例上创建或修改的文件。这些文件的自定义属性也会在目标实例上更新。但是,如果源上只修改了这些文件的自定义属性,而没有修改文件的内容,那么进程就不会在目标实例上修改这些属性。

在开始之前

  1. 如果您的源实例承载的文件大于25gb,那么它们将在传输过程中被阻止。要了解如何检查大文件是否由源实例托管,以及在这种情况下该做什么,请阅读部分。
  2. 确保您可以使用具有管理权限的用户登录到源实例和目标实例的UI。
  3. 确保目标实例license支持的特性不少于源实例license。
  4. 按照描述运行文件传输预检查在这里
  5. 确保源Artifactory实例上的所有远程存储库在目标实例中创建后都具有对其目标URL的网络访问权。即使一个远程存储库或联合存储库没有访问权限,配置传输操作也将被取消。您可以选择不传输特定的存储库。
  6. 确保在源Artifactory实例中配置的所有复制在目标实例中创建后都具有对其目标URL的网络访问权。
  7. 确保您有一个可以登录MyJFrog的用户。有关MyJFrog的更多信息,请参见MyJFrog云门户
  8. 确保您可以通过终端登录到源实例的主节点。

运行传输过程

执行以下步骤将配置和工件从源实例传输到目标实例。必须按照正确的顺序运行这些步骤,不要同时运行任何命令。

步骤1:在目标实例上启用配置传输

默认情况下,目标没有配置传输所需的api。为配置传输启用目标实例是通过MyJFrog完成的。配置传输完成后,必须禁用MyJFrog中的配置传输,如下文步骤4所示。

  • 启用配置传输将触发JFrog Xray、Distribution、Insights和Pipelines在云中关闭,因此这些服务将不可用。一旦您在稍后的过程中禁用了配置传输,这些服务将再次启动。
  • 启用配置转移将会缩小JFrog Artifactory的规模,这会减少它的可用资源。2022世界杯阿根廷预选赛赛程一旦您在稍后的过程中禁用了配置传输,Artifactory将再次扩展。

请按照以下步骤启用配置转移。

  1. 登录MyJFrog。
  2. 点击设置
  3. 将Artifactory配置从自托管转移到云节中,点击鸣谢复选框。选中复选框后才能启用配置传输。

  4. 如果您有一个具有多个Artifactory实例的Enterprise+订阅,请从下拉菜单中选择目标实例。
  5. 切换启用配置转移,以启用传输。这个过程可能需要几分钟才能完成。


  6. 配置传输现在已启用,您可以继续传输过程。


步骤2:设置将文件推送到目标实例的源实例

要设置源实例,必须在源实例的主节点上安装数据传输用户插件。本节将指导您完成安装步骤。

  1. 按照描述在源实例的主节点机器上安装JFrog CLI在这里
  2. 通过在终端上运行以下命令,使用您的管理凭证配置源Artifactory实例的连接详细信息。

    添加源服务器


  3. 确保JFROG_HOME环境变量被设置,保存JFrog安装目录的值。它通常指向/ opt / jfrog目录中。方法中所描述的正确目录,如果未设置变量,请将其值设置为指向正确的目录JFrog产品目录结构篇文章。

如果源实例具有internet访问权限,请执行以下步骤:

在终端上运行以下命令下载安装数据传输用户插件。

Jf rt transfer-plugin-install source-server

如果源实例没有internet访问,请执行以下步骤。

  1. 从可以上网的机器上下载以下两个文件:
    下载data-transfer.jarhttps://releases.jfrog.io/artifactory/jfrog-releases/data-transfer/(释放)/ lib / data-transfer.jar
    下载dataTransfer.groovyhttps://releases.jfrog.io/artifactory/jfrog-releases/data-transfer/(释放)/ dataTransfer.groovy
  2. 在源实例的主节点机器上创建一个新目录,并将下载的两个文件放在该目录中。
  3. 在终端上运行以下命令安装数据传输用户插件。取代<插件文件dir>令牌的完整路径指向包含您下载的插件文件的目录。

    将插件文件的目录改为>

步骤3:将配置从源实例传输到目标实例


以下过程将清除目标实例的整个配置,并将其替换为源实例的配置。这包括存储库和用户。


  1. 按照所描述的在源实例机器上安装JFrog CLI在这里
  2. 通过在终端上运行以下命令,使用您的管理凭证配置源Artifactory实例的连接详细信息。

    添加源服务器
  3. 通过在终端上运行以下命令,使用您的管理凭据配置目标Artifactory服务器的连接详细信息。

    添加目标服务器
  4. 运行以下命令验证所有远程存储库的目标url都可以从目标访问。

    Jf rt transfer-config source-server target-server——prechecks

    如果命令输出显示任何存储库都不能访问目标URL,则需要在继续传输配置之前使该URL可访问。然后可以重新运行该命令,以确保url是可访问的。

    如果从目标不能访问任何目标url,则传输配置的过程将失败。但是,您可以排除具有不可访问的目标url的存储库。


  5. 运行如下命令将配置从源端转移到目标端。
    运行transfer-config命令。

    Jf rt transfer-config source-server target-server

    此命令可能需要长达两分钟的时间才能运行。

    • 默认情况下,如果发现目标实例不为空,该命令将不传输配置。例如,如果您之前运行了transfer-config命令,就会发生这种情况。如果希望强制运行该命令,并覆盖目标上的现有配置,请使用——力选择。
    • 如果不希望转移所有存储库,可以使用——include-repos而且——exclude-repos命令选项。运行以下命令查看这些选项的用法。
    Jf rt transfer-config -h
  6. 查看终端的输出信息,确认无错误。
    显示信息分为以下4个阶段:

    ========== 1/4阶段——准备工作  ========== ========== 阶段2/4从源Artifactory——出口配置  ========== ========== 阶段3/4 -下载并修改配置  ========== ========== 阶段目标Artifactory 4/4 -导入配置  ==========
  7. 查看日志以确认没有错误。

现在应该可以使用源实例的管理凭证访问目标实例。登录到目标实例UI。目标实例必须具有与源实例相同的存储库。

步骤4:在目标实例上禁用配置传输

一旦配置传输成功,您需要禁用目标实例上的配置传输。这对于安全性和在启用配置传输时将目标服务器设置为低资源都很重要。2022世界杯阿根廷预选赛赛程

  1. 登录MyJFrog
  2. 在Actions菜单下,选择启用配置转移
  3. 切换启用配置转移禁用配置传输。
    禁用配置传输可能需要一些时间。

步骤5:将文件从源实例推到目标实例

  1. 在任何可以访问源和目标JFrog实例的机器上安装JFrog CLI。要做到这一点,请遵循所描述的步骤在这里

  2. 运行以下命令开始将文件从源实例中的所有存储库推送到目标实例。

    Jf rt传输文件源服务器目标服务器

    这个命令可能需要几天时间来推送所有文件,这取决于您的系统大小和网络速度。当命令运行时,它在终端内可视地显示传输进度。


    如果在后台运行该命令,可以使用以下命令查看传输进度。

    Jf rt传输文件——状态



    • 如果不希望从所有存储库传输文件,或者希望分阶段运行传输,则可以使用——include-repos而且——exclude-repos命令选项。运行以下命令查看这些选项的用法。

      Jf rt传输文件-h
    • 如果源实例和目标实例之间的流量需要通过HTTPS代理路由,请参考部分。
    • 如果进程正在前台运行,则可以通过按CTRL+C停止传输进程;如果进程正在后台运行,则可以通过运行以下命令停止传输进程。

      Jf rt传输文件——停止

      该进程将从重新运行命令时停止的点开始继续。

    在文件传输运行时,监视源实例上的负载,如果需要,降低传输速度或提高传输速度以获得更好的性能。有关更多信息,请参见读了控制文件传输速度节中有关如何做到这一点的信息。

  3. 在运行结束时,将打印错误摘要文件的路径,引用一个生成的CSV文件。摘要CSV上的每一行都表示传输失败的文件的错误日志。的后续执行Jf rt传输文件命令,JFrog CLI将尝试再次传输这些文件。

  4. 一旦Jf rt传输文件命令完成文件传输后,可以再次运行该命令传输在传输过程中创建或修改的文件。您可以根据需要多次执行该命令。该命令的后续执行还将尝试传输之前执行该命令时未能传输的文件。

中传输文件如何工作的详细信息部分。

步骤6:同步源和目标之间的配置

您可以选择在文件传输过程完成后在源和目标之间同步配置。如果在文件传输过程一直在运行时,在源上创建或修改了新的配置实体,例如项目、存储库或用户,您可能希望这样做。要做到这一点,只需重复上面的步骤1-3。


从多个源实例传输项目和存储库

Jf rt transfer-config命令将所有配置实体(用户、组、项目、存储库等)从源实例传输到目标实例。在此过程中,目标上的现有配置将被删除,并用源上的新配置替换。如果您希望将项目和存储库从多个源实例转移到单个目标实例,同时保留目标上的现有配置,请遵循以下步骤。

这些步骤只触发项目和存储库的转移。目前不支持用户等其他配置实体。


  1. 确保源实例和目标实例都有管理访问令牌。您必须使用管理员访问令牌,而不是管理员用户名和密码。
  2. 在任何可以访问源实例和目标实例的机器上安装JFrog CLI,使用所描述的步骤在这里.在配置源和目标的连接详细信息时,请确保使用admin访问令牌,而不是admin用户名和密码。
  3. 运行以下命令将源实例中的所有项目和存储库合并到目标实例中。

    Jf rt transfer-config-merge源服务器目标服务器

    如果您不希望从所有项目或存储库传输文件,或者希望分阶段运行传输,则可以使用——包括项目,——排除项目,——包括回购而且——exclude-repos命令选项。运行以下命令查看这些选项的用法。

    Jf rt transfer-config-merge -h

文件传输是如何工作的?

文件传输阶段

Jf rt传输文件命令将文件从源实例推送到目标实例,如下所示:

  • 文件按顺序一个一个地推送到每个存储库。
  • 对于每个存储库,该过程包括以下三个阶段:
    • 第一阶段将存储库中的所有文件推到目标。
    • 第二阶段推送在阶段1开始运行后创建或修改的文件(diffs)。

    • 第三阶段试图推送在前一阶段传输失败的文件(第一阶段第二阶段)或在先前执行该命令时。
  • 如果第一阶段完成了特定存储库的运行,然后运行Jf rt传输文件再次命令,只是第二阶段而且第三阶段将被触发。您可以运行Jf rt传输文件根据需要多次,直到准备好将流量永久地移动到目标实例为止。在任何后续的命令运行中,第二阶段是否将新创建和修改的文件和第三阶段是否会重新传输在前一阶段传输失败的文件在之前的命令运行中

使用复制

为了帮助减少阶段2运行所需的时间,您可以配置基于事件的推送复制源实例上的部分或全部本地存储库。配置了Replication后,当在源存储库上创建或更新文件时,它们会立即复制到目标实例上相应的存储库。
复制可以在任何时候进行配置。在文件传输过程之前、过程中或之后。

文件传输状态

您可以运行Jf rt传输文件多次命令。这是允许传输在执行前一个命令后创建或更新的文件所必需的。为了实现这一点,JFrog CLI将文件传输过程的当前状态存储在一个名为转移在JFrog CLI主目录下。您通常可以在这个位置找到这个目录~ / .jfrog /转让
JFrog CLI使用该目录下保存的状态,避免重复之前执行命令时执行的传输操作。例如,有一次第一阶段对于特定的存储库完成后,后续执行的命令是否会跳过第一阶段和运行第二阶段而且第三阶段只有。

如果您希望忽略存储状态,并从头开始重新启动文件传输,则可以添加——不管状态选项。Jf rt传输文件命令。


在可以访问源机器和目标机器的网络上安装JFrog CLI

不像transfer-config命令,它应该在Artifactory的主要笔记机器上运行,建议在可以通过网络访问源Artifactory URL的机器上运行transfer-files命令。这允许将传输负载分散到所有Artifactory集群节点上。这台机器还应该具有对目标Artifactory URL的网络访问权。

按照以下步骤在该机器上安装JFrog CLI。

  1. 安装JFrog CLIJFrog命令行安装程序.例如:

    curl -fL https://install-cli.jfrog.io | sh
  2. 如果源实例只能通过HTTP/HTTPS代理访问,请按所述设置代理环境变量在这里
  3. 使用您的管理凭证配置源Artifactory实例的连接详细信息。
    执行以下命令,并按照提示操作。

    添加源服务器
  4. 配置目标Artifactory实例的连接细节。

    添加目标服务器


在源实例机上安装JFrog CLI

在源实例上安装JFrog CLIJFrog命令行安装程序.例如:

curl -fL https://install-cli.jfrog.io | sh

如果源实例作为docker容器运行,并且在容器中无法安装JFrog CLI,请按照以下步骤操作。

  1. 通过终端连接到主机。
  2. 执行该命令将JFrog CLI可执行文件下载到正确的目录下。

    curl -fL https://getcli.jfrog.io/v2-jf | sh
  3. 复制刚才的JFrog CLI可执行文件下载到容器,通过运行以下docker命令。一定要更换<容器名>容器的名称。

    Docker cp jf <容器名>:/usr/bin/jf . Docker cp jf <容器名>:/usr/bin/jf . Docker
  4. 连接容器,执行以下命令,确保JFrog命令行安装成功

    摩根富林明- v


控制文件传输速度

Jf rt传输文件命令将二进制文件从源实例推到目标实例。此传输可能需要数天时间,这取决于传输的总数据的大小、源和目标实例之间的网络带宽以及其他因素。

由于流程预期在源实例仍在使用时运行,因此监视该实例以确保传输不会给它增加太多负载。此外,您可能决定在监视传输时增加负载以实现更快的传输。介绍控制文件传输速度的操作步骤。

默认情况下,Jf rt传输文件命令使用8个工作线程将文件从源实例推送到目标实例。降低这个值会导致源实例的传输速度变慢,负载降低,而增加这个值则相反。因此,我们建议逐步增加。属性时可以更改此值Jf rt传输文件命令正在运行。不需要停止进程来更改工作线程的总数。新的值集将被JFrog CLI缓存,并用于同一台机器上的后续运行。要设置该值,只需在运行的计算机上的新终端窗口运行以下交互式命令Jf rt传输文件命令。

Jf rt传输设置

Build-info存储库

当在构建信息存储库中传输文件时,JFrog CLI将工作线程总数限制为8个。这样做是为了在传输build-info时限制目标实例上的负载。


手动复制文件存储以减少传输时间

当您的自托管Artifactory托管了数百tb的二进制文件时,您可以咨询您的JFrog客户经理,通过手动将整个文件存储复制到JFrog云存储来减少文件传输时间。这减少了传输时间,因为二进制内容不需要通过网络传输。

Jf rt传输文件命令将二进制文件的元数据传输到数据库(文件路径、文件名、属性和统计信息)。该命令还传输复制文件存储后创建和修改的二进制文件。

要在复制文件存储后运行文件传输,请添加——filestore命令选项设置为Jf rt传输文件命令。


在启动文件传输过程之前运行预检查

在启动文件传输过程之前,我们强烈建议运行预检查,以确定可能影响传输的问题。您可以通过在终端上运行JFrog CLI命令来触发预先检查。预检将核查下列事项:

  1. 源实例和目标实例之间存在网络连接。
  2. 源实例不包括属性值大于2.4K字符的工件。这很重要,因为JFrog Cloud不支持超过2.4K字符的值,并且在传输过程中会跳过这些属性。

要运行预检查,请遵循以下步骤:

  1. 在任何可以访问源和目标JFrog实例的机器上安装JFrog CLI。要做到这一点,请遵循所描述的步骤在这里
  2. 执行如下命令:

    Jf rt传输文件源服务器目标服务器-预检查

    如果源实例和目标实例之间的流量需要通过HTTPS代理路由,请添加——proxy-key命令选项,如部分。

传输大于25gb的文件

默认情况下,超过25gb的文件将在文件传输过程中被JFrog云基础设施阻止。要检查源Artifactory实例承载的文件是否大于该大小,请执行以下操作。

  1. 在将<源实例URL>、<用户名>和<密码>令牌替换为源实例详细信息之后,从您的终端运行以下curl命令。命令执行可能需要几分钟,这取决于Artifactory托管的文件数量。

    curl -X POST <源实例URL>/artifactory/api/search/aql -H "Content-Type: text/plain" -d '项。Find ({"name": {"$match":"*"}}).include("size")。排序({" $ desc ":["大小"]}).limit (1) - u <用户名>:<密码>
  2. 您应该得到如下所示的结果。

    {"结果":{“大小”:132359021},“范围”:{“start_pos”:0,“end_pos”:1,“总”:1、“限制”:1}}

    的价值大小表示您的源Artifactory实例所承载的最大文件大小。

  3. 如果您收到的大小值大于25000000000,请在联系JFrog支持之前避免启动文件传输,以检查是否可以为您增加这个大小限制。您可以通过发送电子邮件到support@www.si-fil.com

通过HTTPS代理将流量从源路由到目标

Jf rt传输文件命令通过网络将文件直接从源推到目标实例。如果需要通过HTTPS代理路由来自源实例的流量,请遵循以下步骤。

1.方法中所描述的在源实例UI中定义代理详细信息管理代理文档。
2.当运行Jf rt传输文件命令,添加——proxy-key使用在UI中配置的“代理键”作为选项值。例如,配置的“代理密钥”为my-proxy-key,执行如下命令:

Jf rt传输文件my-source my-target -proxy-key my-proxy-key


常见问题

在传输结束后,源实例和目标实例上的文件计数有时会出现显著差异。这些差异可能是由许多原因引起的,在大多数情况下,并不是一个问题的指示。例如,Artifactory可能包含由文件部署触发的文件清理策略。这可能会导致一些文件在传输后从目标存储库中清除。

实际上不需要在传输过程结束时验证所有文件是否都已传输。JFrog CLI在流程运行时为您执行此验证。它是这样做的。

  1. JFrog CLI遍历源实例上的存储库,并将所有文件推到目标实例。
  2. 如果文件未能到达目标实例或未成功部署到目标实例,源实例将使用文件详细信息记录此错误。
  3. 在传输过程结束时,JFrog CLI为您提供了所有未能推送的文件的摘要。
  4. 故障也记录在转移JFrog CLI主目录下的目录。这个目录通常位于~ / .jfrog /转让.jf rt的后续运行传输文件命令使用此信息尝试再次传输文件。

是的。源Artifactory实例存储了它所承载的每个文件的校验和。当文件被传输到目标实例时,它们被作为HTTP标头与校验和一起传输。目标实例计算接收到的每个文件的校验和,然后将其与接收到的校验和进行比较。如果校验和不匹配,目标将向源报告,源将尝试在过程的稍后阶段再次传输文件。

您可以在任何时候通过按CTRL+C停止命令,然后再次运行它。JFrog CLI将传输过程的状态存储在JFrog CLI主目录下的“transfer”目录中。这个目录通常位于~/.jfrog/transfer。该命令的后续执行将使用存储在该目录中的数据,以尝试避免传输在以前的命令执行中已经传输的文件。

  • 没有标签
版权所有©2023 JFrog Ltd。