[RAILS] Verschieben Sie Active Storage auf S3 lokal

Ich glaube nicht, dass ich es viel verwenden werde, aber ich habe die von Rails Active Storage verwalteten Dateien von S3 auf lokal (Festplatte) verschoben.

Machen Sie sich eine Notiz, um nicht zu vergessen, wie es geht.

Verzeichnisaufbau

In S3 wird die Datei im Bucket mit einem Namen wie "SU61LeyW6YcZtZaoNHSL2CTu" gespeichert.

Wenn Sie es in ein lokales Verzeichnis stellen, sieht es aus wie `` `storage / SU / 61 / SU61LeyW6YcZtZaoNHSL2CTu```. Mit anderen Worten, es wird ein zweistufiges Verzeichnis erstellt, die erste Ebene besteht aus den ersten beiden Zeichen des Dateinamens und die zweite Ebene ist der Verzeichnisname mit dem dritten und vierten Zeichen.

Verfahren

Kopieren Sie Dateien aus S3

Kopieren Sie es in ein Verzeichnis namens storage unter tmp.

$ mkdir tmp/storage
$ aws s3 cp s3://<bucket-name> ./tmp/storage --recursive

Wechseln Sie in das Active Storage-Verzeichnis

Kopieren Sie beim Erstellen eines zweistufigen Verzeichnisses mit dem folgenden Ruby-Skript. Führen Sie im Stammverzeichnis Ihrer Anwendung aus.

require 'fileutils'

src = "tmp/storage"
dst = "storage"

Dir.glob("#{src}/**/*").each do |source|
  next unless File.file?(source)
  file = File.basename(source)
  dir1, dir2, = file.scan(/\A(?<dir1>..)(?<dir2>..)/).flatten
  target = "#{dst}/#{dir1}/#{dir2}/#{file}"
  FileUtils.mkdir_p(File.dirname(target)) unless File.exist?(File.dirname(target))
  FileUtils.cp(source, target)
  puts target
end

Aufräumen

Löschen Sie die kopierten Dateien und Arbeitsverzeichnisse.

Recommended Posts

Verschieben Sie Active Storage auf S3 lokal
Führen Sie Active Storage ein
Informationen zu DelegationError (Active Storage)
Handbuch zur Initialisierung des aktiven Speichers
[Ruby on Rails] Löschen Sie s3-Bilder mit Active Strage
Vorgehensweise zur Verwendung von S3 von LocalStack für Active Storage
[Anfänger] Über Active Storage