Migrieren von Amazon S3 zu DigitalOcean Spaces mit rclone

Einführung

DigitalOcean Spaces ist ein Objektspeicherdienst, mit dem große Datenmengen einfach und kostengünstig gespeichert und verwaltet werden können. Wenn Sie sich zuvor auf andere Objektspeicherdienste verlassen haben, kann die Migration von Daten zu Spaces eine Ihrer ersten Aufgaben sein.

In diesem Handbuch erfahren Sie, wie Sie Daten mit dem Dienstprogramm https://rclone.org/ [+ rclone +] vom S3-Blockspeicherdienst von Amazon auf DigitalOcean Spaces migrieren. Wir zeigen Ihnen, wie Sie "+ rclone +" installieren, welche Konfigurationseinstellungen für den Zugriff auf beide Speicherdienste verwendet werden und mit welchen Befehlen Sie Ihre Dateien synchronisieren und deren Integrität in Spaces überprüfen können.

Erstellen von API-Schlüsseln und Auffinden von Bucket-Eigenschaften

Bevor wir mit der Installation und Konfiguration von "+ rclone +" beginnen, um unsere Objekte in Spaces zu kopieren, benötigen wir einige Informationen zu unseren Amazon S3- und DigitalOcean Spaces-Konten. Wir benötigen einen Satz von API-Schlüsseln für beide Dienste, die das Tool verwenden kann, und wir müssen die Regions- und Standortbeschränkungswerte für unsere Buckets kennen.

Generieren eines DigitalOcean Spaces-API-Schlüssels und Ermitteln des API-Endpunkts

Befolgen Sie zum Erstellen eines DigitalOcean Spaces-API-Schlüssels den Abschnitt „Erstellen eines Zugriffsschlüssels“ unter https://www.digitalocean.com/community/tutorials/how-to-create-a-digitalocean-space-and-api-key # Erstellen eines Zugriffsschlüssels [So erstellen Sie einen DigitalOcean Space und einen API-Schlüssel].

Speichern Sie die Zugriffsschlüssel-ID und den geheimen Schlüssel, damit wir "+ rclone +" für den Zugriff auf unser Konto konfigurieren können.

Als Nächstes müssen wir den entsprechenden API-Endpunkt finden. Wenn Sie bereits einen DigitalOcean-Bereich erstellt haben, in den Sie Ihre Objekte übertragen möchten, können Sie den Endpunkt des Bereichs in der DigitalOcean-Systemsteuerung anzeigen, indem Sie den Bereich auswählen und die Registerkarte "Einstellungen" anzeigen:

Wenn Sie noch keinen Space erstellt haben, kann + rclone + den Space, den Sie beim Kopieren ausgewählt haben, automatisch erstellen. In diesem Fall ist der Endpunkt die Spaces-Region, die Sie verwenden möchten, gefolgt von "+ .digitaloceanspaces.com ". Sie finden die verfügbaren Regionen für Spaces in der DigitalOcean-Systemsteuerung, indem Sie die Auswahloptionen auf der Seite zum Erstellen von Spaces anzeigen. Zum Zeitpunkt dieses Schreibens ist nur die Region "nyc3" verfügbar (mit dem Endpunkt " nyc3.digitaloceanspaces.com +").

Generieren eines Amazon S3-API-Schlüssels

Wenn Sie noch keinen Amazon API-Schlüssel mit der Berechtigung zum Verwalten von S3-Assets besitzen, müssen Sie diese jetzt generieren. Klicken Sie in Ihrer AWS Management Console auf Ihren Kontonamen und wählen Sie im Dropdown-Menü die Option * Meine Sicherheitsanmeldeinformationen * aus:

Wählen Sie anschließend im linken Menü * Benutzer * aus und klicken Sie auf die Schaltfläche * Benutzer hinzufügen *:

image: https://assets.digitalocean.com/articles/s3_migration/add_user_button.png [AWS-Schaltfläche zum Hinzufügen von Benutzern]

Geben Sie einen * Benutzernamen * ein und wählen Sie * Programmatic access * im Abschnitt * Access type *. Klicken Sie auf die Schaltfläche * Weiter: Berechtigungen *, um fortzufahren:

Wählen Sie auf der folgenden Seite die Option * Bestehende Richtlinien direkt anhängen * oben aus und geben Sie dann * s3read * im Filter * Richtlinientyp * ein. Aktivieren Sie das Richtlinienfeld * AmazonS3ReadOnlyAccess * und klicken Sie anschließend auf die Schaltfläche * Weiter: Überprüfen *, um fortzufahren:

Überprüfen Sie die Benutzerdetails auf der nächsten Seite und klicken Sie anschließend auf die Schaltfläche * Benutzer erstellen *:

Auf der letzten Seite sehen Sie die Anmeldeinformationen für Ihren neuen Benutzer. Klicken Sie auf den Link * Anzeigen * in der Spalte * Geheimer Zugriffsschlüssel *, um die Anmeldeinformationen anzuzeigen:

Kopieren Sie die * Zugangsschlüssel-ID * und den * geheimen Zugangsschlüssel * an einen sicheren Ort, damit Sie "+ rclone +" konfigurieren können, um diese Anmeldeinformationen zu verwenden. Sie können auch auf die Schaltfläche * .csv herunterladen * klicken, um die Anmeldeinformationen auf Ihrem Computer zu speichern.

Ermitteln der Amazon S3-Bucket-Region und der Standortbeschränkungen

Jetzt müssen wir die Regions- und Standortbeschränkungswerte für unseren S3-Bucket ermitteln.

Klicken Sie im oberen Menü auf * Dienste * und geben Sie in der angezeigten Suchleiste * S3 * ein. Wählen Sie den * S3 * -Dienst aus, um zur S3-Verwaltungskonsole zu gelangen.

Wir müssen nach dem Regionsnamen des Eimers suchen, den wir übertragen möchten. Die Region wird neben dem Bucket-Namen angezeigt:

Wir müssen die Regionszeichenfolge und die passende Positionsbeschränkung für die Region unseres Buckets finden. Suchen Sie unter http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region[dieses S3-Regionsdiagramm von Amazon nach dem Regionsnamen Ihres Buckets, um die entsprechenden Regions- und Standortbeschränkungszeichenfolgen zu finden. In unserem Beispiel lautet der Name unserer Region „US East (N. Virginia) ”, also würden wir" + us-east-1 + "als Regionszeichenfolge verwenden und unsere Standortbeschränkung wäre leer.

Nachdem wir die entsprechenden Informationen von unserem Amazon-Konto erhalten haben, können wir "+ rclone +" mithilfe dieser Informationen installieren und konfigurieren.

Installieren Sie rclone auf Ihrem lokalen Computer

Sie können jetzt https://rclone.org/ [+ rclone +] auf Ihrem lokalen Computer installieren.

Besuchen Sie den Abschnitt Downloads auf der Projektwebsite, um Binärdateien des Dienstprogramms zu finden, die für verschiedene Plattformen kompiliert wurden. Laden Sie die komprimierte Binärdatei, die dem Betriebssystem Ihres Computers entspricht, in Ihr * Downloads * -Verzeichnis herunter, um zu beginnen.

Nachdem Sie die zip-Datei "+ rclone +" auf Ihren Computer heruntergeladen haben, befolgen Sie den nachstehenden Abschnitt, der Ihrer Plattform entspricht.

Linux

Bevor wir das Archiv extrahieren können, müssen wir sicherstellen, dass das Dienstprogramm "+ unzip +" verfügbar ist.

Wenn Sie * Ubuntu * oder * Debian * ausführen, können Sie den lokalen Paketindex aktualisieren und + unzip + installieren, indem Sie Folgendes eingeben:

sudo apt-get update
sudo apt-get install unzip

Wenn Sie * CentOS * oder * Fedora * ausführen, können Sie + unzip + installieren, indem Sie Folgendes eingeben:

sudo yum install unzip

Navigieren Sie mit installiertem "+ unzip " zu dem Verzeichnis, in das Sie die zip-Datei " rclone +" heruntergeladen haben:

cd ~/Downloads

Als nächstes entpacke das Archiv und verschiebe es in das neue Verzeichnis:

unzip rclone*
cd rclone-v*

Von hier aus können wir die Binärdatei in das Verzeichnis "+ / usr / local / bin +" kopieren, so dass sie systemweit verfügbar ist:

sudo cp rclone /usr/local/bin

Als Nächstes können wir die Handbuchseite zum System hinzufügen, um auf einfache Weise Hilfe zur Befehlssyntax und zu den verfügbaren Optionen zu erhalten. Stellen Sie sicher, dass das von uns benötigte lokale Handbuchverzeichnis verfügbar ist, und kopieren Sie dann die Datei + rclone.1 +:

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1

Aktualisieren Sie die + man + - Datenbank, um die neue Handbuchseite zum System hinzuzufügen:

sudo mandb

Schließlich können wir das Konfigurationsverzeichnis erstellen und eine Konfigurationsdatei öffnen, um unsere S3- und Spaces-Anmeldeinformationen zu definieren:

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

Dadurch wird Ihr Texteditor mit einer neuen leeren Datei geöffnet. Fahren Sie mit dem Abschnitt über den Link [Definieren Ihrer Objektspeicherkonten] fort.

Mac OS

Wenn Sie mit macOS arbeiten, navigieren Sie im Terminal zu dem Verzeichnis, in das Sie die zip-Datei + rclone + heruntergeladen haben:

cd ~/Downloads

Als nächstes entpacken Sie die Datei und wechseln in die neue Verzeichnisebene:

unzip -a rclone*
cd rclone-v*

Stellen Sie als Nächstes sicher, dass das Verzeichnis "+ / usr / local / bin" verfügbar ist, und verschieben Sie die Binärdatei "+ rclone" in das Verzeichnis:

sudo mkdir -p /usr/local/bin
sudo cp rclone /usr/local/bin

Schließlich können wir das Konfigurationsverzeichnis erstellen und eine Konfigurationsdatei öffnen, um unsere S3- und Spaces-Anmeldeinformationen zu definieren:

mkdir -p ~/.config/rclone
nano ~/.config/rclone/rclone.conf

Dadurch wird Ihr Texteditor mit einer neuen leeren Datei geöffnet. Fahren Sie mit dem Abschnitt über den Link [Definieren Ihrer Objektspeicherkonten] fort.

Windows

Wenn Sie mit Windows arbeiten, navigieren Sie zunächst im Windows-Datei-Explorer zum Verzeichnis Downloads. Wählen Sie die ZIP-Datei "+ rclone +" aus und klicken Sie mit der rechten Maustaste. Klicken Sie im angezeigten Kontextmenü auf * Alle extrahieren… *:

Befolgen Sie die Anweisungen, um die Dateien aus dem ZIP-Archiv zu extrahieren.

Das Dienstprogramm + rclone.exe + muss über die Befehlszeile ausgeführt werden. Öffnen Sie ein neues * Eingabeaufforderungsfenster * (das Programm + cmd.exe +), indem Sie auf die Windows-Schaltfläche in der unteren linken Ecke klicken, * cmd * eingeben und * Eingabeaufforderung * auswählen.

Navigieren Sie im Inneren zu dem Pfad, den Sie extrahiert haben, indem Sie Folgendes eingeben:

cd "%HOMEPATH%\Downloads\rclone*\rclone*"

Listen Sie den Verzeichnisinhalt auf, um sicherzustellen, dass Sie sich am richtigen Speicherort befinden:

dir
Output10/23/2017  01:02 PM    <DIR>          .
10/23/2017  01:02 PM    <DIR>          ..
10/23/2017  01:02 PM                17 git-log.txt
10/23/2017  01:02 PM           296,086 rclone.1
10/23/2017  01:02 PM        16,840,192 rclone.exe
10/23/2017  01:02 PM           315,539 README.html
10/23/2017  01:02 PM           261,497 README.txt
              5 File(s)     17,713,331 bytes
              2 Dir(s)  183,296,266,240 bytes free

Sie müssen sich in diesem Verzeichnis befinden, wenn Sie den Befehl + rclone.exe + verwenden möchten.

Als Nächstes können wir das Konfigurationsverzeichnis erstellen und eine Konfigurationsdatei öffnen, um unsere S3- und Spaces-Anmeldeinformationen zu definieren:

mkdir "%HOMEPATH%\.config\rclone"
notepad "%HOMEPATH%\.config\rclone\rclone.conf"

Dadurch wird Ihr Texteditor mit einer neuen leeren Datei geöffnet. Fahren Sie fort, um zu erfahren, wie Sie Ihre Objektspeicherkonten in der Konfigurationsdatei definieren.

Konfigurieren Sie die Konten S3 und Spaces

Wir können unsere Amazon S3- und DigitalOcean Spaces-Konfiguration in der neuen Datei definieren, sodass "+ rclone +" Inhalte zwischen unseren beiden Konten verwalten kann.

Beginnen wir mit der Definition unseres S3-Kontos. Fügen Sie den folgenden Abschnitt in die Konfigurationsdatei ein:

~ / .config / rclone / rclone.conf

[s3]
type = s3
env_auth = false
access_key_id =
secret_access_key =
region =
location_constraint =
acl = private

Hier definieren wir einen neuen "+ rclone " remote "mit dem Namen" + s3 + ". Wir setzen den Typ "" auf "+ s3 ", damit " rclone " die geeignete Art der Interaktion und Verwaltung der Remote-Speicherressource kennt. Wir werden die S3-Berechtigungsnachweise in der Konfigurationsdatei selbst definieren, also setzen wir " env_auth " auf " false +".

Als nächstes setzen wir die Variablen "+ access_key_id " und " secret_access_key +" auf unseren S3-Zugriffsschlüssel bzw. den geheimen Schlüssel. Stellen Sie sicher, dass Sie die Werte in die mit Ihrem Konto verknüpften S3-Anmeldeinformationen ändern.

Wir legen die Einschränkung für Region und Standort gemäß den Eigenschaften unseres S3-Buckets fest, die wir im Amazon-Regionsdiagramm gefunden haben. Schließlich setzen wir die Zugriffssteuerungsrichtlinie auf "privat", damit Assets standardmäßig nicht öffentlich sind.

Jetzt können wir einen ähnlichen Abschnitt für unsere DigitalOcean Spaces-Konfiguration definieren. Fügen Sie den folgenden Abschnitt in die Konfigurationsdatei ein:

~ / .config / rclone / rclone.conf

. . .

[spaces]
type = s3
env_auth = false
access_key_id =
secret_access_key =
endpoint =
acl = private

In diesem Abschnitt definieren wir eine neue Fernbedienung namens "Spaces". Wieder setzen wir + type + auf + s3 +, da Spaces eine S3-kompatible API anbietet. Wir deaktivieren "+ env_auth +", damit wir die Spaces-Anmeldeinformationen in der Konfigurationsdatei definieren können.

Als nächstes setzen wir die Variablen "+ access_key_id " und " secret_access_key " auf die Werte, die für unser DigitalOcean-Konto generiert wurden. Wir setzen den ` Endpunkt ` auf den entsprechenden Spaces-Endpunkt, den wir zuvor festgelegt haben. Schließlich setzen wir die Option " acl " erneut auf " private +", um unsere Assets zu schützen, bis wir sie freigeben möchten.

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Achten Sie unter MacOS und Linux darauf, die Berechtigungen der Konfigurationsdatei zu sperren, da sich unsere Anmeldeinformationen darin befinden:

chmod 600 ~/.config/rclone/rclone.conf

Unter Windows werden nicht-administrativen Benutzern Berechtigungen verweigert, sofern dies nicht ausdrücklich gewährt wird. Daher sollten wir den Zugriff nicht manuell anpassen müssen.

Objekte aus S3 in Spaces kopieren

Nachdem unsere Konfiguration abgeschlossen ist, können wir unsere Dateien übertragen.

Beginnen Sie mit der Überprüfung der konfigurierten Fernbedienungen:

rclone listremotes
Outputs3:
spaces:

Beide von uns definierten Abschnitte werden angezeigt.

Wir können die verfügbaren S3-Buckets anzeigen, indem wir + rclone + auffordern, die mit der + s3 + -Remote verknüpften „Verzeichnisse“ aufzulisten (achten Sie darauf, den Doppelpunkt am Ende des Remote-Namens hinzuzufügen):

rclone lsd s3:
Output          -1 2017-10-20 15:32:28        -1 source-of-files

Die obige Ausgabe zeigt an, dass in unserem S3-Konto ein Bucket mit dem Namen "+ source-of-files +" gefunden wurde.

Wenn Sie bereits einen DigitalOcean Space erstellt haben, können Sie den Vorgang wiederholen, um Ihre Spaces anzuzeigen:

rclone lsd spaces:
Output          -1 2017-10-25 19:00:35        -1 existing-space

Um den Inhalt eines S3-Buckets oder DigitalOcean Space anzuzeigen, können Sie den Befehl + tree + verwenden. Übergeben Sie den Remote-Namen, gefolgt von einem Doppelpunkt und dem Namen des „Verzeichnisses“, das Sie auflisten möchten (Name des Buckets oder Leerzeichens):

rclone tree s3:
Output/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
   ├── Social Rebrand Presentation 032815.ppt
   ├── TechnicLauncher.jar
   ├── nda_template.docx
   ├── textfile.txt
   └── the_mother_of_all_demos.mp4

2 directories, 8 files

Wenn Sie fertig sind, können Sie die Dateien von Ihrem S3-Bucket in einen DigitalOcean Space kopieren, indem Sie Folgendes eingeben:

rclone sync s3: spaces:

Wenn Sie den von Ihnen ausgewählten Space noch nicht erstellt haben, versucht "+ rclone +", einen Space mit dem angegebenen Namen für Sie zu erstellen. Dies schlägt fehl, wenn der angegebene Name bereits von einem anderen Konto verwendet wird oder wenn der Name nicht den Namensanforderungen für DigitalOcean Spaces entspricht (nur Kleinbuchstaben, Zahlen und Bindestriche).

Unter der Annahme, dass alles gut gelaufen ist, kopiert + rclone + Objekte von S3 nach Spaces.

Wenn die Übertragung abgeschlossen ist, können Sie visuell überprüfen, ob die Objekte übertragen wurden, indem Sie sie mit dem Unterbefehl + tree + anzeigen:

rclone tree spaces:
Output/
├── README.txt
├── demo_dir
│   ├── demo1
│   └── demo2
└── media
   ├── Social Rebrand Presentation 032815.ppt
   ├── TechnicLauncher.jar
   ├── nda_template.docx
   ├── textfile.txt
   └── the_mother_of_all_demos.mp4

2 directories, 8 files

Verwenden Sie für eine zuverlässigere Überprüfung den Unterbefehl + check +, um die Objekte in beiden Fernbedienungen zu vergleichen:

rclone check s3: spaces:
Output2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 0 differences found
2017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 2 hashes could not be checked

Dadurch werden die Hash-Werte jedes Objekts in beiden Fernbedienungen verglichen. Möglicherweise wird eine Meldung angezeigt, dass einige Hashes nicht verglichen werden konnten. In diesem Fall können Sie den Befehl mit dem "+ - size-only " -Flag (das nur anhand der Dateigröße verglichen wird) oder dem " - download +" -Flag (das jedes Objekt von beiden Remotes herunterlädt, um es lokal zu vergleichen) erneut ausführen. um die Übertragungsintegrität zu überprüfen.

Fazit

In diesem Handbuch wird erläutert, wie Sie Objekte von Amazon S3 nach DigitalOcean Spaces übertragen. Wir haben API-Anmeldeinformationen für beide Dienste erstellt, das Dienstprogramm "+ rclone +" auf unserem lokalen Computer installiert und konfiguriert und dann alle Objekte aus einem S3-Bucket in einen DigitalOcean Space kopiert.

Der + rclone + - Client kann für viele andere Aufgaben der Objektspeicherverwaltung verwendet werden, z. B. zum Hochladen oder Herunterladen von Dateien, zum Mounten von Buckets im lokalen Dateisystem und zum Erstellen oder Löschen zusätzlicher Buckets. Weitere Informationen zu den Funktionen des Tools finden Sie auf der Seite "+ man +".