Laden Sie eine Sicherungskopie von einem E-Mail-Link mit `wget` herunter

Für einen erfahrenen Sysadmin ist das bevorzugte Mittel zum Verschieben großer Dateien ein Werkzeug wie rsync oder scp. Manchmal haben Sie jedoch keinen SSH-Zugriff auf den Host, von dem Sie eine große Sicherungsdatei abrufen müssen.

Da Sicherungsdateien sensible Informationen enthalten, verfügt Discourse über Sicherheitsfunktionen, die es einer nicht autorisierten Person sehr erschweren, eine Sicherung abzurufen. Sie müssen einen Download-Link per E-Mail erhalten und diesen Link als der Benutzer verwenden, der die Anfrage gestellt hat. Wenn Sie die Daten über einen Webbrowser herunterladen möchten, ist dies ziemlich mühelos. Wenn Sie diese Sicherung jedoch auf einen anderen Server im Internet verschieben möchten, macht dies die meisten privaten Internetverbindungen zu einer sehr schmerzhaften Angelegenheit. Auf meiner privaten Internetverbindung dauert das Hochladen einer 2,3 GB großen Datei über 20 Minuten. Die hier vorliegende 12-GB-Datei würde in der Größenordnung von zwei Stunden benötigen.

So erhalten Sie einen Link, mit dem Sie eine Sicherung von einer Discourse-Website über wget abrufen können:

Zunächst starten Sie den Download wie üblich und öffnen dann die Download-Seite von Chrome (chrome://downloads/). Klicken Sie mit der rechten Maustaste auf die URL und kopieren Sie sie.

Dann können Sie in einer Shell auf dem Rechner, auf dem Sie die Datei haben möchten, diese URL in eine wget-Anfrage einfügen. Stellen Sie sicher, dass Sie sie in Anführungszeichen setzen, da die \u0026-Zeichen Probleme verursachen können. Sie müssen auch sicherstellen, dass der ursprüngliche Dateiname der Sicherungsdatei beibehalten wird. Ihre Anfrage sollte ungefähr so aussehen:

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

Sie können auch -o filename weglassen und die Datei umbenennen (die dann die vollständige URL als Dateiname hat), nachdem Sie sie heruntergeladen haben. Die URL ist zeitlich begrenzt, sodass Sie den Download erst starten müssen, wenn Sie bereit sind, sie auf Ihren Server zu ziehen.

Anschließend können Sie die Datei nach /var/discourse/shared/standalone/backups/default verschieben und sie über die Weboberfläche oder mit folgendem Befehl wiederherstellen:

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

Der letzte Befehl oben gibt eine Liste der verfügbaren Sicherungen aus. Sie können die richtige kopieren und einfügen, um die Wiederherstellung zu starten.

14 „Gefällt mir“

Leider scheint dies außerhalb von Websites, die S3 verwenden, nicht zu funktionieren.

[quote=„pfaffman, Beitrag:1, Thema:170623”]
Stellen Sie sicher, dass Sie Anführungszeichen darum setzen, da die &-Zeichen Probleme verursachen werden.
[/quote]

Ich glaube, dass es funktionieren wird.

1 „Gefällt mir“

Ich glaube, das wird nicht funktionieren, da S3 die Identität über den Parameter X-Amz-Signature in der URL authentifiziert, während das direkte Herunterladen von Discourse eine Cookie-basierte Authentifizierung erfordert. Das bloße Kopieren der URL in wget reicht für die Authentifizierung nicht aus.

1 „Gefällt mir“

Hmm. Vielleicht stimmt das. Vielleicht habe ich es immer nur über S3 gemacht (wie wahrscheinlich von CDCK-Sites, bei denen ich keinen SSH-Zugang habe).