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.
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.
Copiez-le dans un répertoire appelé stockage sous tmp.
$ mkdir tmp/storage
$ aws s3 cp s3://<bucket-name> ./tmp/storage --recursive
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
Supprimez les fichiers copiés et les répertoires de travail.
Recommended Posts