La copia de seguridad contiene muchos directorios y subdirectorios. Creo que debes copiar los archivos de los directorios, desde ambos buckets de forma recursiva, a la ubicación correspondiente en el servidor local. Por ejemplo, todo el contenido de los directorios 1X y 2X de ambos buckets debe copiarse a los directorios 1X y 2X en el servidor local. No estoy seguro al respecto, pero creo que es así.
¿Puedes confirmar que has copiado correctamente todos los archivos?
Sí, lo entiendo perfectamente y he asegurado que sus rutas relativas permanezcan exactamente igual.
Por ejemplo, si un archivo existía anteriormente en: //bucket1/uploads/original/2x/f/filename.jpg
Y el otro en: //bucket2/uploads/original/1x/a/filename.png
Ahora ambos también existen en: /var/discourse/shared/web_only/uploads/default/original/2x/filename.jpg y ../original/1x/a/filename.png
Problemas
Antes de copiar el contenido del bucket al servidor local, noté que algunas de mis imágenes solo se mostraban como iconos, y los visitantes del sitio podían ver la imagen completa haciendo clic en ese icono.
Después de copiar (no mover) todo el contenido del bucket a la ubicación mencionada anteriormente en mi servidor local (manteniendo las rutas relativas intactas), ejecuté el comando: discourse remap:oldurl-or-path new-url-or-path
Sin embargo, nada cambió visualmente en el sitio. Luego ejecuté: rake posts:rebake
Entonces, incluso los iconos de las imágenes desaparecieron y al pasar el puntero del ratón sobre el espacio vacío del marcador de posición de la imagen, no aparecía ninguna URL o ruta.
Pero como ya expliqué, después de realizar las operaciones de ‘remap’ y ‘rebake’, incluso desaparecen los iconos de las imágenes (es decir, la situación empeora).
Debes proporcionar la ruta correcta al realizar la remapeo; de lo contrario, podría romperse. He realizado manualmente el remapeo de un enlace S3 a partir de la salida de muestra que proporcionaste anteriormente y funciona.
Puedes verificar una publicación de ejemplo de mi sitio web aquí (aunque la publicación está en hindi, puedes encontrar fácilmente el pequeño icono de la imagen en medio del texto). La imagen completa solo se muestra si haces clic en el pequeño icono.
Sin embargo, si vuelvo a mapear y luego vuelvo a generar, este icono también desaparece por completo. Y no queda ninguna forma para que el visitante vea la imagen.
Parece que anteriormente has utilizado CloudFront para la caché. Limpia la caché de tu navegador e inténtalo de nuevo.
Si has realizado alguna configuración de CloudFront, creo que sería mejor deshacer todas esas configuraciones.
Ahora, también estoy obteniendo los mismos enlaces de CloudFront. Parece que has habilitado AWS CloudFront para tu sitio. CloudFront está almacenando en caché las imágenes de tu bucket. Creo que debes eliminar la distribución de CloudFront. Debes iniciar sesión en tu cuenta de AWS para verificar si la distribución de CloudFront está activa.
Nunca he usado CloudFront (ni ningún otro CDN) en AWS ni en el frontend. Aunque hace unos dos años usé CloudFlare durante un mes o más, luego lo desactivé definitivamente.
Tampoco elegí CloudFront en AWS. Así que tampoco surge ninguna duda al respecto.
Además, en mi PC, cuando abro las imágenes, se muestran las direcciones del bucket de AWS, no las de ningún otro CDN.
Solo estás sugiriendo que vuelva a mapear las rutas de las imágenes (desde la URL del bucket de S3 hasta la ruta del servidor local) y luego volver a generar.
Pero como ya mencioné, ya lo hice y descubrí que esto agrava el problema. (Además, después de volver a generar, la opción ‘Restaurar’ tampoco funciona y es difícil revertir los cambios).
Lo intentaré de nuevo, con todo el cuidado posible.
Pero estaba buscando algún método con el que pudiera averiguar qué hay detrás de escena. Al menos con una publicación de muestra, quería ver qué publicaciones tienen qué bucket mapeado y en qué lío estoy.
De todos modos, lo intentaré de nuevo y te lo haré saber aquí. Gracias una vez más.
La ruta que especificaste en tu remapeo anterior se reflejará en la salida del siguiente comando. Dado que ambos buckets aún están presentes, creo que tu remapeo anterior pudo haber fallado. En cualquier caso, ahora depende de ti. Espero que encuentres tu solución pronto. ¡Mucha suerte!
./launcher enter app
rails c
Upload.all.sample(2000).pluck(:url)
Esto es más fácil si encuentras una imagen en tu foro e inspeccionas su URL. Quieres cada parte hasta el nombre del archivo real (incluyendo la última /):
Paso 3: Recocina los posts y reconstruye la aplicación:
rake posts:rebake
exit
./launcher rebuild app
Paso 4: Desactiva S3
Desactiva las subidas a S3 en la configuración (o en tu app.yml si lo configuraste así). Si has estado usando una CDN, también elimina el enlace a ella de la configuración (de lo contrario, no se desactiva realmente).
Apaga tu contenedor. Yo lo hice moviendo el contenido a un nuevo contenedor como copia de seguridad en un paso inicial.
¡Uf! Listo. Hasta ahora no he encontrado ningún problema. ¡Ve y pruébalo!
¡Buen trabajo! Creo que esos son los pasos que finalmente me ayudaron a tener éxito, ¡aunque había hecho muchos remapeos diferentes que no funcionaron tan bien! Es genial tener instrucciones formalizadas.