方法一:备份方式
Artifactory 支持两个级别的数据导入和导出:
- System:Artifactory 可以导出和导入整个 Artifactory 服务器:配置、安全信息、存储的数据和元数据。使用的格式与系统备份格式相同。这在手动运行备份以及迁移和恢复完整的 Artifactory 实例时非常有用(作为使用数据库级备份和恢复的替代方法)。
系统导出导入
在源主机Artifactory|Admin|Import&Export中,您可以通过选择导出路径,点击Export

服务器上的导入文件应该由运行 Artifactory 进程的同一用户读取和拥有,这一点非常重要。

在目标主机的Artifactory|Administration|Artifactory | Import&Export | System中,使用Improt System菜单导入它

导入/导出操作的源/目标是Artifactory 服务器本身上的文件夹(不推荐 Zip
存档
,
因为
zip
存档导入或导出大量数据可能非常耗时)。您可以使用 Artifactory 中内置的服务器端浏览来选择服务器端源/目标文件夹:

检查
导入或导出大量数据可能非常耗时。在导入/导出操作期间,您可以离开页面浏览并采样系统日志以监控进度。
最后访问页面各项功能,验证功能正常:
通过
|
检查项
|
备注
|
|
节点启动成功,日志正常
| |
|
登入正常
| |
|
其他节点健康状态正常
| |
|
页面查看制品数据正常
| |
|
页面下载制品正常
|
方法二:复制方式
本方式是以最少的停机时间迁移 Artifactory。参考(
本文)。
此方法通过一些巧妙的脚本和 Artifactory REST API 来解决大量重复的推送复制设置。您还需要下载
最新的 JFrog CLI利用其复制配置系统。
在新的 Artifactory 上创建存储库和设置
即使是大规模的,也可以使用系统导出将 Artifactory 配置从旧 Artifactory 导入到新 Artifactory。在大规模(超过 100 万个工件)下,默认的完整系统导出需要很长时间才能完成。我们只需要在另一端创建存储库。
在源Artifactory|Admin|Import&Export中,您可以通过选中两个“排除”复选框来排除配置和用户以外的所有内容。这将保存 旧(源)Artifactory 的配置和权限的几乎为空的备份;它应该很快完成。

说明:
Exclude Content : 设置后,二进制文件和元数据将从导出中排除。仅导出配置文件。
Exclude Metadata:
设置后,存储库元数据将从导入
/
导出中排除。
接下来,将导出复制到新的 Artifactory 中。

在目标Artifactory|Administration|Artifactory | Import&Export | System中,使用“导入系统”菜单导入它以自动创建所有目标存储库:

如果在导入时选中了两个复选框,内容和原数据都不会被删除,这样以后可以再次导入以更新存储库列表和权限。如果复制设置不正确,这也是您可以恢复的方法。
说明:
Exclude Content : 设置后,存储库二进制文件将从导入中排除。
Exclude Metadata: 设置后,存储库元数据将从导入/导出中排除。
步骤 1:获取存储库名称
手动设置 Push Replications 需要对每个仓库进行设置。这里为手动设置的示例:
第一步:找到本地仓库

第二步:点击仓库

第三步:点击Replications,点击New添加

第四步:输入要推送到的目标Artifactory URL、Username、Password,并点击Test测试,Save保存。

第五步:点击按钮,推送。

由上可见,面对非常多的仓库时这种方法就不适用了。我们将使用JFrog Cli 简化上列步骤。
下载
最新的 JFrog CLI利用其复制配置系统


建议您创建一个项目文件夹来保存我们即将创建的模板文件:
第一,获取存储库列表来自旧(源)Artifactory。下面的命令仅保存存储库密钥,即存储库的名称。密钥是我们设置复制所需的全部。此命令将保存我们将在下一步中使用的“repositories.list”文件:

[预期输出]

通过“repositories.list”文件,我们实际上已经获得了在任何地方设置复制所需的所有信息。下一步是为JFrog CLI 创建正确的模板文件。
步骤 2:创建复制设置
JFrog CLI 提供
“
复制创建
”动作
A] 首先,

B] 生成复制模板配置文件。下面的循环将读取“repositories.list”文件的每一行,并根据键创建一个模板文件:
# JFrog CLI
使用名称
“target”
并在配置复制时填写正确的
URL
c
cat
repositories.list |
while
read
line
do
#Variable setup
#Get the repository key, remove "key": from the JSON
REPO=$(
echo
$line
|
cut
-d
':'
-f 2)
REPO_FILENAME=$(
echo
${REPO%??}
|
cut
-c 2-)
#Get a good looking filename
#Insert the static default parameters
echo
'{ "enabled": "true","cronExp":"0 0 12 * * ?",'
>
$REPO_FILENAME
-template.json
#Insert the repository Key
echo
'"repoKey": '
$REPO
>>
$REPO_FILENAME
-template.json
#Insert the remaining parameters, note we're replicating to the same repository name
echo
'"serverId": "target", "targetRepoKey": '
$REPO
' "enableEventReplication":"true" }'
>>
$REPO_FILENAME
-template.json
done
[预期的 JSON 文件内容]

循环结束后,
请检查生成的文件
它们看起来都应该像上面的示例图像。在我们将模板大量部署到源之前仔细检查模板非常重要,以防止将错误配置的设置部署到旧的 Artifactory 中。
C]运行“
" 在每个 JSON 文件上执行 CLI 命令,此脚本将为您执行此操作:
jfrog
配置使用源
ls
| while
read line
do
echo “jf rt replication-create $line ”
jf rt replication-create $line
done
这会将每个模板推送到源 Artifactory,最后所有 Artifactory 的本地存储库都将配置为推送到目标:
此操作需要两个artifactory有不同的license才可完成复制。


步骤 3:正式迁移
如果前面的步骤成功完成,随着时间的推移,Production Artifactory 会将其所有数据推送到 Target,并且两者将拥有相同的信息。您可以通过单击 UI 中的“立即运行”按钮来启动迁移。
最后访问页面各项功能,验证功能正常:
通过
|
检查项
|
备注
|
|
节点启动成功,日志正常
| |
|
登入正常
| |
|
其他节点健康状态正常
| |
|
页面查看制品数据正常
| |
|
页面下载制品正常
|
查看日志,是否正常启动
tail -f /opt/jfrog/artifactory/var/log/console.log

用户登录是否正常,用户权限是否迁移


查看节点状态

查看仓库制品信息是否正确显示

下载制品是否正常


故障排除问题
如果上述步骤中使用的复制信息不正确,Source Artifactory 将以大量错误的复制设置告终。恢复应用程序的最快方法是从配置描述符中删除复制设置。
推荐的方法是使用 REST API 来重新部署“artifactory.config.xml”
你已经保存在空系统导出在此过程开始时捕获。
要使用的文件位于导出文件夹中,例如20211215.195625/artifactory.config.xml.
