当前位置: 首页 > 知识库问答 >
问题:

如何将本地存储(主动存储)迁移到谷歌云存储

慕祯
2023-03-14

我正在尝试在谷歌云上迁移我的rails应用程序。我已将活动存储与地面军事系统上创建的存储桶连接起来。我上传了bucket中的文件夹“storage”,但应用程序中的所有图像都有404错误。

如何正确迁移GCS中的本地存储文件夹?

谢谢你的建议

共有1个答案

籍利
2023-03-14

这个问题与此非常相似,正如在该线程中提到的:

DiskService使用的文件夹结构与google上的云存储服务不同。

DiskService将密钥的第一个字符的一部分用作文件夹。云服务只需使用密钥,并将所有变体放在单独的文件夹中。

您可以创建一个rake任务来将文件复制到云存储,例如:

namespace :active_storage do
  desc "Migrates active storage local files to cloud"
    task migrate_local_to_cloud: :environment do
      raise 'Missing storage_config param' if !ENV.has_key?('storage_config')

      require 'yaml'
      require 'erb'
      require 'google/cloud/storage'

      config_file = Pathname.new(Rails.root.join('config/storage.yml'))
      configs = YAML.load(ERB.new(config_file.read).result) || {}
      config = configs[ENV['storage_config']]

      client = Google::Cloud.storage(config['project'], config['credentials'])
      bucket = client.bucket(config.fetch('bucket'))

      ActiveStorage::Blob.find_each do |blob|
        key = blob.key
        folder = [key[0..1], key[2..3]].join('/')
        file_path = Rails.root.join('storage', folder.to_s, key)
        file = File.open(file_path, 'rb')
        md5 = Digest::MD5.base64digest(file.read)
        bucket.create_file(file, key, content_type: blob.content_type, md5: md5)
        file.close
        puts key
      end
    end
  end

执行为:railsactive_storage:migrate_local_to_cloudstorage_config=google。

您可以在这里找到有用的文档。

 类似资料:
  • 早些时候,我的文件上载到存储文件夹中。但是现在我想在s3存储桶上上传图像。如何迁移s3存储桶上现有的本地数据? 我在这里找到了脚本https://www.stefanwienert.de/blog/2018/11/05/active-storage-migrate-between-providers-from-local-to-amazon/但是得到了一个错误 为活动存储调用私有方法打开 那么,我

  • 我有一个具有统一访问控制的Google云存储桶,我在权限中添加了“诱惑者”。它说该对象是公共的,但当我尝试打开链接时,仍会收到此消息:“匿名调用方没有storage.objects.get access to the Google Cloud storage object”错误代码为“401”。我希望任何用户都能够访问该链接。我该怎么做?提前谢谢! 向你问好本

  • 我建立Android应用程序链接到谷歌云存储。我想允许访问GCS到我的Android应用程序只。 谷歌提供三种安全连接地面军事系统的解决方案: Oauth 2.0(谷歌账户也是如此) 资料来源:https://developers.google.com/storage/docs/authentication?hl=FR 是否有其他通过地面军事系统安全连接的解决方案?我希望通过这种方式在地面军事系统

  • 我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。

  • 我试图迁移我的本地主动存储文件到谷歌云存储。我试图只是复制文件的到我的GCS桶-但它似乎不工作。 我发现404未找到错误,因为它正在搜索以下文件: 我的本地存储目录有一个完全不同的文件夹结构,其中包含以下文件夹:。 我检索图像的方法如下: 我错过了什么?