Algo que no puedo explicar resulta en copias duplicadas de imágenes

Estoy trabajando con un sitio alojado al que le faltan algunas imágenes.

Una de las imágenes que faltan, tomada de una revisión anterior de una publicación, apunta a https://aws1.discourse-cdn.com/business7/uploads/harness/original/2X/1/16d12d54b3b4ae7aabc8a93417570bce0984e3c9.png

Parece que la imagen está en S3 pero no en la tabla Uploads. Antes, podía volver a añadir imágenes en una nueva publicación para que se creara un nuevo registro de carga, lo que solucionaba todas las publicaciones que utilizaban esa imagen cuando se volvían a hornear.

Primero intenté pegar la URL esperando que Discourse descargara la imagen y creara un registro de carga, pero no lo hizo, así que la subí a través del navegador, pero la nueva imagen es diferente y obtiene esta URL: https://aws1.discourse-cdn.com/business7/uploads/harness/original/2X/d/d59e3eccc6d9d038b6fae8910e787e851c8714de.png (existe la posibilidad de que haya invertido cuál imagen era cuál).

También está la cuestión de cómo desaparecieron los registros de la tabla Uploads en primer lugar. Estoy trabajando con otro sitio anteriormente alojado, al que también le faltan un montón de imágenes en la tabla Uploads. Esto podría merecer un segundo tema, pero podría estar relacionado. Para un montón de esas imágenes, pude encontrarlas en S3, descargarlas y crear un nuevo registro de Upload como este:

  sha1= Upload.sha1_from_short_url(short_url)
  extension = short_url.split(".").last
  upload = Upload.find_by(sha1: sha1)
  prefix = "url del bucket de s3"
  if !upload
    # intentar encontrarlo en s3
    one = sha1[0]
    two=sha1[1]
    url_link = "#{prefix}/#{one}/#{two}/#{sha1}.#{extension}"
    puts "URL: #{url_link}"
    url = URI.parse(url_link)
    full_filename = url_link.gsub(remove_url,"/shared/uploads/default/")
    filename = "/tmp/#{File.basename(url_link.gsub(remove_url,"/shared/uploads/default/"))}"
    dirname = File.dirname(filename)
    unless File.directory?(dirname)
      FileUtils.mkdir_p(dirname)
    end
    File.open(filename, "w") do |file|
      Net::HTTP.start(url.host) do |http|
        resp = http.get(url.path)
        open(file, "wb") do |file|
          file.write(resp.body)
        end
      end
    end
      # crear carga para el archivo
   ...

Parece que este método solucionará aproximadamente el 25% de las publicaciones afectadas en el otro sitio.

No entiendo muy bien cómo el título de este tema se relaciona con el resto.\n\nEl original que enlazaste es un PNG de 14 Kb. Una imagen de tan pequeño tamaño no activará la rutina de optimización de imágenes del lado del cliente.

Entonces, estoy aún más confundido sobre cómo la misma imagen está generando dos SHA1/rutas diferentes.

Descargué la imagen de un bucket y la subí a través del navegador, y generó una segunda copia de la misma imagen con un nombre de archivo diferente. Los dos archivos son diferentes; si el navegador no la cambió al subirla, entonces no sé qué más podría haberla cambiado.

Oh. Quizás la imagen en el bucket ha sido cambiada de la imagen original que se subió, por lo que es diferente de la imagen original. Entonces, lo que necesitaría suceder es descargar la imagen original en lugar de . . . no. original está en la ruta.