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.
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.
Kopieren Sie es in ein Verzeichnis namens storage unter tmp.
$ mkdir tmp/storage
$ aws s3 cp s3://<bucket-name> ./tmp/storage --recursive
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
Löschen Sie die kopierten Dateien und Arbeitsverzeichnisse.
Recommended Posts