[RAILS] Déplacer le stockage actif sur S3 localement

Je ne pense pas que je l'utiliserai beaucoup, mais j'ai déplacé les fichiers gérés par Rails Active Storage de S3 vers local (disque).

Prenez note de ne pas oublier comment le faire.

Structure du répertoire

Dans S3, le fichier est stocké dans le compartiment avec un nom comme SU61LeyW6YcZtZaoNHSL2CTu```.

Si vous le mettez dans un répertoire local, cela ressemble à storage / SU / 61 / SU61LeyW6YcZtZaoNHSL2CTu```. En d'autres termes, un répertoire à deux niveaux est créé, la première couche contient les deux premiers caractères du nom de fichier et la deuxième couche est le nom du répertoire avec les troisième et quatrième caractères.

procédure

Copier des fichiers depuis S3

Copiez-le dans un répertoire appelé stockage sous tmp.

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

Déplacer vers le répertoire Active Storage

Copiez lors de la création d'un répertoire à deux niveaux avec le script Ruby suivant. Exécutez dans le répertoire racine de votre application.

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

Nettoyer

Supprimez les fichiers copiés et les répertoires de travail.

Recommended Posts

Déplacer le stockage actif sur S3 localement
Présentez le stockage actif
À propos de DelegError (Active Storage)
Manuel d'initialisation du stockage actif
[Ruby on Rails] Supprimer les images s3 avec Active Strage
Procédure d'utilisation de S3 de LocalStack pour le stockage actif
[Débutant] À propos du stockage actif