在Rails应用程序中,我想备份MySQL数据库以及存储在Amazon S3中的CarrierWave上传。我已经研究过S3对象版本,但无法在CarrierWave中找到任何支持。
以前有人这样做过吗?或任何想法?
答案 0 :(得分:0)
class BaseUploader < CarrierWave::Uploader::Base
# Override the filename of the uploaded files:
def filename
return unless original_filename
if model && model.read_attribute(mounted_as).present? && model.changed.blank?
model.read_attribute(mounted_as)
else
ext = File.extname(original_filename)
base = File.basename(original_filename, ext)
"#{base}_#{token}#{ext}"
end
end
# override method to avoid deletion of file
def remove!; end
protected
def token
var = :"@#{mounted_as}_token"
model.instance_variable_get(var) or model.instance_variable_set(var, Time.now.to_i)
end
end
我每次上传文件时都使用这种方法创建唯一的文件名,因此避免了用同名的名称覆盖以前的文件的可能性。另外,我已将CarrierWave配置为不在更新时删除以前存储的文件。所以,现在如果我恢复数据库备份,图像就会在那里。
Snippet受create random and unique filenames启发。