Scarica un backup da un link email con `wget`

Per un sysadmin esperto, il modo preferito per spostare file di grandi dimensioni è utilizzare strumenti come rsync o scp, ma a volte non si ha accesso SSH al host da cui è necessario recuperare un file di backup di grandi dimensioni.

Poiché i file di backup contengono informazioni sensibili, Discourse dispone di funzionalità di sicurezza che rendono molto difficile per una persona non autorizzata recuperare un backup. È necessario ottenere un link di download via email e utilizzarlo effettuando l’accesso come l’utente che ha richiesto il file. Se si desidera scaricare i dati tramite un browser web, l’operazione è piuttosto semplice. Tuttavia, se si vuole spostare quel backup su un altro server su Internet, la maggior parte delle connessioni Internet residenziali rende il processo molto complicato. Sulla mia connessione domestica, un file da 2,3 GB richiede oltre 20 minuti per il caricamento. Il file da 12 GB qui presente richiederebbe circa due ore.

Ecco come ottenere un link che permetta di recuperare un backup da un sito Discourse tramite wget.

Innanzitutto, avvia il download come di consueto e poi apri la pagina dei download di Chrome (chrome://downloads/). Fai clic con il tasto destro sull’URL e copialo.

Successivamente, in una shell sulla macchina dove desideri il file, incolla quell’URL in una richiesta wget. Assicurati di racchiuderlo tra virgolette, poiché i caratteri \u0026 potrebbero causare problemi. Devi anche assicurarti di mantenere il nome originale del file di backup. La tua richiesta dovrebbe essere simile a questa:

wget --show-progress "https://bucket-name.s3.us-west-2.amazonaws.com/backups/xyz/multisitename/discourse-2020-11-19-001538-v20201116132948.tar.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIAWWK5WHOFJ%2F20201119%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20201119T013442Z\u0026X-Amz-Expires=300\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=1753b97a8aaf6953c89aa28628b8db" -o discourse-2020-11-19-001538-v20201116132948.tar.gz

Puoi anche omettere -o filename e rinominare il file (che avrà come nome l’URL completo) dopo averlo scaricato. L’URL ha una scadenza temporale, quindi dovrai avviare il download solo quando sei pronto a trasferirlo sul tuo server.

Successivamente, puoi spostare il file in /var/discourse/shared/standalone/backups/default e ripristinarlo dall’interfaccia web o con:

cd /var/discourse
./launcher enter app
discourse enable_restore
discourse restore

L’ultimo comando sopra elencato stamperà un elenco dei backup disponibili; potrai quindi copiare e incollare quello corretto per avviare il ripristino.

14 Mi Piace

Purtroppo questo non sembra funzionare al di fuori dei siti che utilizzano S3.

Credo che funzionerà.

1 Mi Piace

Penso che questo non funzionerà, poiché S3 autentica l’identità tramite il parametro X-Amz-Signature nell’URL, mentre il download diretto da Discourse richiede l’autenticazione basata su cookie. La semplice copia dell’URL in wget non è sufficiente per l’autenticazione.

1 Mi Piace

Hmm. Forse è giusto. Forse l’ho sempre fatto tramite S3 (come probabilmente dai siti CDCK dove non ho accesso ssh).