Descarga una copia de seguridad desde un enlace de correo electrónico con `wget`

Para un administrador de sistemas experimentado, la forma preferida de mover archivos grandes es mediante una herramienta como rsync o scp, pero a veces no tienes acceso SSH al host donde necesitas recuperar un archivo de copia de seguridad grande.

Dado que los archivos de copia de seguridad contienen información sensible, Discourse cuenta con funciones de seguridad que hacen muy difícil que una persona no autorizada recupere una copia de seguridad. Debes obtener un enlace de descarga por correo electrónico y usar ese enlace iniciando sesión como el usuario que lo solicitó. Si deseas descargar los datos con un navegador web, es bastante sencillo. Sin embargo, si quieres mover esa copia de seguridad a otro servidor en Internet, la mayoría de los proveedores de servicios de Internet residenciales hacen que esto sea un proceso muy engorroso. En mi conexión de internet doméstica, un archivo de 2,3 GB tarda más de 20 minutos en subirse. El archivo de 12 GB mencionado aquí tardaría aproximadamente dos horas.

A continuación se explica cómo obtener un enlace que te permita extraer una copia de seguridad de un sitio de Discourse mediante wget.

Primero, inicia la descarga como de costumbre y luego abre la página de descargas de Chrome (chrome://downloads/). Haz clic derecho en la URL y cópiala.

Luego, en una terminal de la máquina donde deseas guardar el archivo, puedes pegar esa URL en una solicitud wget. Asegúrate de poner comillas alrededor de la URL, ya que los caracteres \u0026 (ampersand) pueden causar problemas. También debes asegurarte de mantener el nombre de archivo original de la copia de seguridad. Tu solicitud debería verse algo así:

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

También puedes omitir -o nombre_archivo y renombrar el archivo (que tendrá la URL completa como nombre de archivo) después de descargarlo. La URL tiene límite de tiempo, por lo que deberás iniciar la descarga cuando estés listo para transferirla a tu servidor.

Luego puedes mover el archivo a /var/discourse/shared/standalone/backups/default y restaurarlo desde la interfaz web o con:

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

El último comando anterior imprimirá una lista de las copias de seguridad disponibles y podrás copiar y pegar la correcta para iniciar la restauración.

14 Me gusta

Lamentablemente, esto no parece funcionar fuera de los sitios que utilizan S3.

Creo que funcionará.

1 me gusta

Creo que esto no funcionará, ya que S3 autentica la identidad a través del parámetro X-Amz-Signature en la URL, mientras que la descarga directa desde Discourse requiere autenticación basada en cookies. Simplemente copiar la URL en wget no es suficiente para la autenticación.

1 me gusta

Hmm. Quizás sea correcto. Quizás solo lo he hecho a través de S3 (como probablemente desde sitios de CDCK donde no tengo acceso SSH).