Verificado: Images lost when migrating to self-hosting, posts:rebake não faz nada de bom.
Problema
Seguimos as instruções oficiais e criamos uma instância Lightsail, a partir daí fizemos um download do banco de dados da interface do Discourse e o aplicamos para obter 80% do caminho. A ideia era migrar para a instância auto-hospedada mantendo a variante anterior ativa.
Uma vez que tenhamos uma cópia ativa do antigo fórum. Começamos a migrar as imagens. Para fazer isso, primeiro cancelamos nossa assinatura para obter e migrar nossas imagens.
Como novas imagens seriam carregadas na instância auto-hospedada, precisaríamos apenas carregar da instância hospedada antes da data de transição. Isso significa que nunca usamos o dump do banco de dados que veio com nossas imagens e cancelamento; como já tínhamos feito a migração, ele já estava expirado.
Observo três comportamentos relacionados a este ponto no tempo.
- Recursos referenciados no backup (dump SQL, especificamente) apontam para a infraestrutura do Discourse
- Recursos referenciados* desde a criação no backup, por exemplo, imagens de novas postagens, são referenciados corretamente e encontrados em nossa infraestrutura
Consequentemente, se eu recarregar um recurso que resulta no mesmo hash, ele será vinculado à infraestrutura do Discourse. Por exemplo: tentar corrigir o favicon carregando o mesmo não funciona. No entanto, posso carregar qualquer outra imagem aleatória, e ela funcionará.
Estado atual
Pelo que entendi, o upload://<X> passa por decodificação b62 (e sha1?) para mapeá-lo para a pasta public/uploads. Temos todas essas imagens:
O dump que nos foi fornecido pela equipe do Discourse contém um zip com
default/original/1Xe ele pode ser visto atualmente em/var/www/discourse/public/uploads/default/original/1X. Esta última pasta agora contém 329 itens, o dump fornecido continha 249 itens—isso me parece bom.
Isso significa que os dados devem ser descobertos, mesmo que eu não consiga encontrar o upload diretamente na pasta. Estou tentando entender essa relação, para que eu possa corrigir o mapeamento de alguma forma. Inicialmente, parecia apenas uma substituição simples de string, e isso funcionou para algumas imagens. Algumas agora foram substituídas por um transparent.png, onde antes era apenas uma imagem inacessível.

