# Spostamento da un bucket S3 a un altro

**URL:** https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779
**Category:** Support
**Created:** [29 Marzo 2021, 7:36pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779 "2021-03-29T19:36:23Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [29 Marzo 2021, 7:36pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/1 "2021-03-29T19:36:23Z")

</div>

Continuando la discussione da [Come spostare il mio bucket di upload S3 da un provider a un altro?](https://meta.discourse.org/t/how-do-i-move-my-s3-upload-bucket-from-one-provider-to-another/178484/2):

Sto cercando di passare da un bucket GCP a un bucket AWS S3. Il vecchio sistema non utilizza una CDN S3 (chi lo ha configurato, a quanto pare, non sapeva esattamente cosa stesse facendo).

Ho usato `s3cmd` per sincronizzare il vecchio bucket GCP con un filesystem locale, quindi l’ho usato di nuovo per caricare le risorse sul nuovo bucket S3. Il sistema è ora correttamente configurato con S3 e CDN del sito come descritto in [Utilizzo dello storage oggetti per gli upload (S3 e cloni)](https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916).

L’argomento collegato sopra suggeriva di usare `rake posts:remap` per aggiornare i post (immagino che dovrei anche ribaking tutti i post? O almeno quelli che corrispondono al vecchio bucket?).

Quando ho eseguito `posts:remap`, ha rimappato solo un post.

```
 Upload.order(Arel.sql('RANDOM()')).limit(10).pluck(:id, :url)

```

mostra che tutti quelli hanno il vecchio bucket… Ah, ecco il problema. Non serve `rake posts:remap`, ma `discourse remap` come descritto in [Change the domain name or rename your Discourse](https://meta.discourse.org/t/change-the-domain-name-or-rename-my-discourse/16098).

> [@merefield](#):
>
> Ottima domanda e consiglio. Dovrebbe diventare una guida pratica?

Sì, penso di sì.

Mi occuperò di farlo a breve. @Falco, in linea di massima, si tratta di:

- creare un nuovo bucket e una CDN per esso, ricostruire il container per utilizzare il nuovo bucket/CDN e assicurarsi che funzioni
- configurare `s3cmd` per il vecchio bucket e sincronizzare i dati in locale
- configurare `s3cmd` per il nuovo bucket e sincronizzare i dati sul nuovo bucket
- eseguire `discourse remap OLD-BUCKET-DOMAIN-NAME NEW-BUCKET-DOMAIN-NAME`
- ribaking

Sembra corretto?

Se usi la stessa CDN per il vecchio e il nuovo bucket, potresti evitare di dover fare il ribaking, ma ottenere il timing giusto sembra un po’ complicato (non puoi cambiare l’origine della CDN finché i dati non sono nel nuovo bucket, ma dovresti assicurarti in qualche modo che nulla venga caricato sul vecchio bucket durante il processo di sincronizzazione) — forse basta dire che è possibile.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [29 Marzo 2021, 7:43pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/2 "2021-03-29T19:43:22Z")

</div>

> [@pfaffman](#):
>
> configura `s3cmd` per il bucket precedente e sincronizza i dati in locale.

Forse è meglio utilizzare l’AWS CLI ufficiale per una guida?

> [@pfaffman](#):
>
> - esegui `discourse remap NOME-DOMINIO-BUCKET-VECCHIO NOME-DOMINIO-BUCKET-NUOVO`

Usa `DbHelper.remap` qui.

> [@pfaffman](#):
>
> rebake

Non necessario

> [@pfaffman](#):
>
> Se utilizzi la stessa CDN per il bucket vecchio e quello nuovo, potresti evitare di dover fare il rebake, ma ottenere il tempismo giusto sembra un po’ complicato (non puoi cambiare l’origine della CDN finché i dati non sono nel bucket nuovo, ma dovresti in qualche modo assicurarti che nulla venga caricato nel bucket vecchio durante il processo di sincronizzazione?) – forse basta dire che è possibile.

Usa la stessa CDN e cambia semplicemente l’origine della CDN nel pannello della CDN, oppure usa una nuova CDN e fai il remap con `DbHelper.remap`. In entrambi i casi non è necessario il rebake.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [29 Marzo 2021, 7:47pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/3 "2021-03-29T19:47:48Z")

</div>

> [@Falco](#):
>
> Forse è meglio utilizzare la CLI ufficiale di AWS per una guida?

Ah. OK. Ci guarderò. . . È possibile far funzionare la CLI di AWS con bucket non AWS?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2 Aprile 2021, 8:15pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/4 "2021-04-02T20:15:05Z")

</div>

Ehi Rafael. Sto per arrivare alla fine. La mia versione attuale di questa guida punta a `aws cli` e `gsutil` per sincronizzare dall’old al locale e dal locale al new (collego semplicemente a questi strumenti e fornisco un comando da riga di comando compilato con i nomi dei bucket in un segnaposto). Poi utilizza `DbHelper` per aggiornare le tabelle. Per il mio sito di dimensioni moderate, funziona piuttosto velocemente. Ottimo.

L’unico problema che ho ora è che la vecchia configurazione non aveva un `s3_cdn_url`, quindi quelle immagini sono ancora collegate direttamente al bucket (non al CDN) nei post. Il rebaking non aiuta. I nuovi upload sono correttamente collegati al CDN. Non puoi risolvere impostando `DISCOURSE_S3_ENDPOINT: ''` perché non ha alcun effetto, quindi dopo aver ripristinato il database ho dovuto cancellare l’impostazione del sito. Non è così grave, ma mi sono voluti diversi rebuild per capirlo.

La vecchia configurazione non aveva definito un S3 CDN. Posso risolvere questo problema rebaking tutti i 1250 post che contengono l’URL/hostname del bucket, ma questo causa il download e l’ottimizzazione di tutte quelle immagini (il vecchio server esegue la versione 2.7.0.beta5, quindi pensavo che avesse già alcune recenti ri-ottimizzazioni?). Questo mette sotto sforzo (carico medio 10-20) il mio povero server da 2GB (con Postgres e Redis su RDS ed Elasticache) per un bel po’ di tempo. Immagino che per questo sito potrei aver bisogno di un EC2 più grande comunque, ma sono ancora un po’ sorpreso che questo rebake metta il server in ginocchio (errori 500 nell’interfaccia utente).

Dovrei invece escogitare un modo per sostituire l’hostname del bucket con l’URL del CDN direttamente nel campo `cooked` di quei post?

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [11 Maggio 2021, 11:03am UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/5 "2021-05-11T11:03:34Z")

</div>

> [@pfaffman](#):
>
> - Crea un nuovo bucket e un CDN per esso, ricostruisci il container per utilizzare il nuovo bucket/CDN e assicurati che funzioni
> - Configura `s3cmd` per il bucket vecchio e sincronizza i dati in locale.
> - Configura `s3cmd` per il nuovo bucket e sincronizza i dati sul nuovo bucket
> - Esegui `discourse remap OLD-BUCKET-DOMAIN-NAME NEW-BUCKET-DOMAIN-NAME`
> - Rigenera

@pfaffman Grazie per avermi indirizzato qui.  
Ma il mio problema si è aggravato negli ultimi due passaggi.

Problema attuale: Alcune delle mie immagini mancano e vengono visualizzate piccole icone al loro posto. Se passi il puntatore sopra di esse, mostrano l’indirizzo ‘olds3bucket’. Ma quando ci clicchi sopra, vengono visualizzate correttamente a grandezza naturale e ora il percorso di ‘news3bucket’ viene mostrato nella barra degli indirizzi.

1. Principalmente mi hai detto di sincronizzare i dati del vecchio bucket sul nuovo, cosa che ho già fatto con successo.
2. Poi ho compilato le impostazioni del nuovo bucket nell’interfaccia web di Discourse, che sto già utilizzando da un anno.
3. Ora dici di ‘rimappare’ l’URL del vecchio bucket con quello nuovo. E poi rigenerare. Qui sta il problema. Quando lo faccio (o anche se eseguo solo ‘rigenera’, o anche se seleziono ‘Rigenera HTML’ dal menu delle impostazioni del post, con o senza aver prima eseguito il passaggio di ‘rimappatura’), le mie immagini che venivano visualizzate solo come icone scompaiono completamente. Al loro posto viene mostrata solo una ‘spazio bianco’. Quindi devo immediatamente annullare/ripristinare.

Grazie ancora.  
(Ho un sito web molto piccolo e, di conseguenza…).

---

<div class="post-metadata">

### Author: ![darix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/darix/32/114280_2.png) [@darix](https://meta.discourse.org/u/darix)
#### Post date: [9 Luglio 2021, 12:59pm UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/6 "2021-07-09T12:59:13Z")

</div>

rclone è un ottimo strumento che può sincronizzare con più backend. Attualmente lo utilizziamo per i backup.

---

<div class="post-metadata">

### Author: ![dschaper](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dschaper/32/209535_2.png) [@dschaper](https://meta.discourse.org/u/dschaper)
#### Post date: [8 Agosto 2021, 4:48am UTC](https://meta.discourse.org/t/moving-from-one-s3-bucket-to-another/184779/7 "2021-08-08T04:48:23Z")

</div>

Ciao Jay,

Scusa se riprendo l’argomento, ma hai fatto ulteriori progressi sulla guida? Grazie!
