5.3. 将内容上传到卫星服务器


本节概述了如何使用 Satellite 6 API 将大型文件上传到卫星服务器。这个过程涉及四个步骤:

  1. 创建上传请求。
  2. 上传内容。
  3. 导入内容。
  4. 删除上传请求。

您可以上传的最大文件大小为 2MB。有关上传较大的内容的详情,请参考 上传内容大大于 2 MB

流程

  1. 创建上传请求。确保修改示例参数以适合您的部署。

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request POST --insecure \
    --user sat_username:sat_password  --data "{}" \
    https://satellite.example.com/katello/api/repositories/3/content_uploads
    Copy to Clipboard Toggle word wrap

    此命令返回 upload_id

    响应示例:

    {"upload_id":"0be156b1-f373-4cad-89d0-924f8f4491d2","_href":"/pulp/api/v2/content/uploads/0be156b1-f373-4cad-89d0-924f8f4491d2/"}
    Copy to Clipboard Toggle word wrap

    注意 upload_id 用于上传内容。

  2. 上传内容。确保在上传数据时使用正确的 MIME 类型。API 将 application/json MIME 类型用于大多数对 Satellite 6 的请求。将 upload_id、MIME 类型和其他参数合并在一起,以上传内容。

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:multipart/form-data" \
    --request PUT --insecure --user sat_username:sat_password \
    --data-urlencode "content@/home/sat6user/rpmbuild/RPMS/noarch/python-scripttest-1.1.1-1.fc21.noarch.rpm" \
    --data-urlencode offset=0 \
    https://satellite.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2
    Copy to Clipboard Toggle word wrap
  3. 将内容上传到卫星服务器后,您需要将其导入到相应的存储库。完成此步骤后,卫星服务器才会检测到新内容。

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request PUT --insecure \
    --user sat_username:sat_password \
    --data "{\"uploads\":[\"0be156b1-f373-4cad-89d0-924f8f4491d2\"]}" \
    https://satellite.example.com/katello/api/repositories/3/import_uploads
    Copy to Clipboard Toggle word wrap
  4. 成功上传并导入您的内容后,您可以删除上传请求。这样可在上传过程中释放任何数据的临时磁盘空间。

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request DELETE --insecure \
    --user sat_username:sat_password --data "{}" \
    https://satellite.example.com/katello/api/repositories/3/content_uploads/0be156b1-f373-4cad-89d0-924f8f4491d2
    Copy to Clipboard Toggle word wrap

上传内容大大于 2 MB

以下示例演示了如何将大型文件分割为块,创建上传请求,上传单个文件,将其导入卫星,然后删除上传请求。请注意,本例使用示例内容、主机名、用户名和文件名。

  1. 使用以下示例将文件分成 2MB 块:

    $ split --bytes 2MB --numeric-suffixes --suffix-length=1 \
    theforeman-foreman-5.0.1.tar.gz foreman_module.
    Copy to Clipboard Toggle word wrap
  2. 查看生成的文件:

    $ ls -la theforeman-foreman-5.0.1.tar.gz foreman_module.*
    -rw-r--r--. 1 root root 50000 Nov  4 04:42 foreman_module.0
    -rw-r--r--. 1 root root 32928 Nov  4 04:42 foreman_module.1
    -rw-r--r--. 1 root root 82928 Nov  4 04:41 theforeman-foreman-5.0.1.tar.gz
    Copy to Clipboard Toggle word wrap
  3. 创建上传请求。

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request POST --insecure --user sat_username:sat_password --data "{}" \
    https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads
    Copy to Clipboard Toggle word wrap

    响应示例:

    {"upload_id":"9585528f-07ad-4bb1-9c80-ccece249b2b7","_href":"/pulp/api/v2/content/uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7/"}
    Copy to Clipboard Toggle word wrap

    注意 upload_id 用于上传内容。

  4. 将文件块上传到卫星服务器。请注意,在这个示例中使用 offset 参数,以及如何与文件大小相关:

    请求示例:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:multipart/form-data" \
    --request PUT --insecure --user sat_username:sat_password \
    --data-urlencode "content@foreman_module.0" \
    --data-urlencode offset=0 \
    https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7
    Copy to Clipboard Toggle word wrap
  5. 将完整上传导入到存储库:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request PUT --insecure --user sat_username:sat_password \
    --data "{\"upload_ids\":[\"9585528f-07ad-4bb1-9c80-ccece249b2b7\"]}" \
    https://ibm-vm01.example.com/katello/api/repositories/2/import_uploads
    Copy to Clipboard Toggle word wrap
  6. 删除上传请求:

    $ curl --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --request DELETE --insecure --user sat_username:sat_password --data "{}" \
    https://ibm-vm01.example.com/katello/api/repositories/2/content_uploads/9585528f-07ad-4bb1-9c80-ccece249b2b7
    Copy to Clipboard Toggle word wrap
  7. 在卫星服务器上,检查传输的文件:

    # ls -la /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz
    -rw-r--r--. 1 apache apache 82928 Nov  4 04:55 /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz
    Copy to Clipboard Toggle word wrap
  8. 通过比较验证初始文件是否与传输相同:

    $ cmp /var/lib/pulp/content/puppet_module/theforeman-foreman-5.0.1.tar.gz \
    theforeman-foreman-5.0.1.tar.gz
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat