s5cmd CLI Object Storage Client einrichten
Installation
Abschnitt betitelt „Installation“1.Laden Sie das neueste Release für Ihre Plattform aus dem GitHub-Repository herunter.
Entpacken Sie das Archiv. Verschieben Sie die ausführbare Datei nach /usr/local/bin.
Für Debian-basierte Distributionen:
Abschnitt betitelt „Für Debian-basierte Distributionen:“Installieren Sie das -deb-Paket mit dpkg:
dpkg -i s5cmd_2.3.0_linux_amd64.debInstallation mit Homebrew:
brew install peak/tap/s5cmdWindows
Abschnitt betitelt „Windows“Entpacken Sie das Archiv. Platzieren Sie die .exe-Datei in einem Verzeichnis in Ihrem Systempfad.
Konfiguration
Abschnitt betitelt „Konfiguration“Für Linux und macOS:
Abschnitt betitelt „Für Linux und macOS:“export S3_ENDPOINT_URL="https://object.storage.eu01.onstackit.cloud" export AWS_ACCESS_KEY_ID="xxxxxxxxxxxx" export AWS_SECRET_ACCESS_KEY="yyyyyyyyyyyyyyyyyyyyyy" export AWS_REGION="eu01"Für Windows-Eingabeaufforderung:
Abschnitt betitelt „Für Windows-Eingabeaufforderung:“setx S3_ENDPOINT_URL "https://object.storage.eu01.onstackit.cloud" setx AWS_ACCESS_KEY_ID "xxxxxxxxxxxx" setx AWS_SECRET_ACCESS_KEY "yyyyyyyyyyyyyyyyyyyyyy" setx AWS_REGION "eu01"Beispiele
Abschnitt betitelt „Beispiele“Alle Buckets auflisten
Abschnitt betitelt „Alle Buckets auflisten“s5cmd lsAlle Objekte in einem Bucket auflisten
Abschnitt betitelt „Alle Objekte in einem Bucket auflisten“s5cmd ls s3://bucketMetadaten eines Remote-Objekts ausgeben
Abschnitt betitelt „Metadaten eines Remote-Objekts ausgeben“s5cmd head s3://bucket/object.gzEin einzelnes STACKIT Object Storage-Objekt herunterladen
Abschnitt betitelt „Ein einzelnes STACKIT Object Storage-Objekt herunterladen“s5cmd cp s3://bucket/object.gz.Mehrere Object Storage-Objekte herunterladen
Abschnitt betitelt „Mehrere Object Storage-Objekte herunterladen“Angenommen, wir haben die folgenden Objekte:
s3://bucket/logs/2020/03/18/file1.gz s3://bucket/logs/2020/03/19/file2.gz s3://bucket/logs/2020/03/19/originals/file3.gzs5cmd cp 's3://bucket/logs/2020/03/*' logs/s5cmd gleicht die angegebenen Platzhalter und Argumente ab, indem es eine effiziente Suche nach den angegebenen Präfixen durchführt. Alle übereinstimmenden Objekte werden parallel heruntergeladen.s5cmderstellt das Zielverzeichnis, falls es fehlt.
Der Inhalt des Verzeichnisses logs/ sieht dann wie folgt aus:
$ tree. └── logs ├── 18 │ └── file1.gz └── 19 ├── file2.gz └── originals └── file3.gz 4 directories, 3 filesℹ️s5cmd behält standardmäßig die Quellverzeichnisstruktur bei. Wenn Sie die Quellverzeichnisstruktur flach halten möchten, verwenden Sie das--flattenflag.
s5cmd cp --flatten 's3://bucket/logs/2020/03/*' logs/Der Inhalt des Verzeichnisses logs/ sieht dann wie folgt aus:
$ tree. └── logs ├── file1.gz ├── file2.gz └── file3.gz 1 directory, 3 filesDatei in den Object Storage hochladen
Abschnitt betitelt „Datei in den Object Storage hochladen“s5cmd cp object.gz s3://bucket/Mehrere Dateien in den Object Storage hochladen
Abschnitt betitelt „Mehrere Dateien in den Object Storage hochladen“s5cmd cp directory/ s3://bucket/Lädt alle Dateien im angegebenen Verzeichnis in den Object Storage hoch, wobei die Ordnerhierarchie der Quelle beibehalten wird.
Ein Object Storage-Objekt löschen
Abschnitt betitelt „Ein Object Storage-Objekt löschen“s5cmd rm s3://bucket/logs/2020/03/18/file1.gzMehrere Object Storage-Objekte löschen
Abschnitt betitelt „Mehrere Object Storage-Objekte löschen“s5cmd rm 's3://bucket/logs/2020/03/19/*'Entfernt alle übereinstimmenden Objekte:
s3://bucket/logs/2020/03/19/file2.gz s3://bucket/logs/2020/03/19/originals/file3.gzs5cmd nutzt die S3-Delete-Batch-API. Wenn bis zu 1000 Objekte übereinstimmen, werden diese in einer einzigen Anfrage gelöscht. Es ist jedoch zu beachten, dass Befehle wie
s5cmd runs3://bucket-foo/object s3://bucket-bar/objectvon s5cmd nicht unterstützt werden und zu einem Fehler führen (da es sich um zwei verschiedene Buckets handelt), da dies dem Vorteil von Batch-Löschanfragen widerspricht. Bei Bedarf kann man für diesen Fall den Modus s5cmd run verwenden, d. h.
$ s5cmd run rm s3://bucket-foo/object rm s3://bucket-bar/objectObjekte von einem Object Storage in einen anderen kopieren
Abschnitt betitelt „Objekte von einem Object Storage in einen anderen kopieren“s5cmd nterstützt auch das Kopieren von Objekten auf der Serverseite.
s5cmd cp 's3://bucket/logs/2020/*' s3://bucket/logs/backup/Kopiert alle übereinstimmenden Objekte in das angegebene Präfix unter Berücksichtigung der Quellordnerhierarchie.
⚠️Das Kopieren von Objekten (von einem Object Storage in einen anderen Object Storage), die größer als 5 GB sind, wird noch nicht unterstützt.
Mehrere Befehle parallel ausführen
Abschnitt betitelt „Mehrere Befehle parallel ausführen“Das leistungsstärkste Feature von s5cmd ist die Befehlsdatei. Tausende von S3- und Dateisystembefehlen werden in einer Datei deklariert (oder einfach von einem anderen Prozess per Pipe übergeben) und von mehreren parallelen Workern ausgeführt. Da nur ein Programm gestartet wird, werden tausende unnötige Fork-Exec-Aufrufe vermieden. Auf diese Weise können S3-Ausführungszeiten von einigen tausend Operationen pro Sekunde erreicht werden.
s5cmd run commands.txtDer Inhalt von commands.txt könnte wie folgt aussehen:
cp 's3://bucket/2020/03/*' logs/2020/03/ # line comments are supported rm s3://bucket/2020/03/19/file2.gz # empty lines are OK too like above # rename an S3 object mv s3://bucket/2020/03/18/file1.gz s3://bucket/2020/03/18/original/file.gzKonfiguration der Parallelität
Abschnitt betitelt „Konfiguration der Parallelität“numworkers ist eine globale Option, die die Größe des globalen Worker-Pools festlegt. Der Standardwert für numworkers ist 256.
Befehle wie cp, select und run, die von Parallelität profitieren können, nutzen diesen Worker-Pool zur Ausführung von Aufgaben. Eine Aufgabe kann ein Upload, ein Download oder ein beliebiger Befehl in einer run-Datei sein.
Wenn Sie beispielsweise 100 Dateien in einen S3-Bucket hochladen und —numworkers auf 10 eingestellt ist, begrenzt s5cmd die Anzahl der gleichzeitig hochgeladenen Dateien auf 10.
s5cmd --numworkers 10 cp '/Users/foo/bar/*' s3://mybucket/foo/bar/concurrency ist eine Option für den Befehl cp. Sie legt die Anzahl der Teile fest, die für eine einzelne Datei parallel hoch- oder heruntergeladen werden. Der Standardwert für concurrency ist 5.
Die Optionen numworkers und concurrency können zusammen verwendet werden:
s5cmd --numworkers 10 cp --concurrency 10 '/Users/foo/bar/*' s3://mybucket/foo/bar/Wenn Sie nur wenige, große Dateien zum Herunterladen haben, hat die Einstellung von —numworkers auf einen sehr hohen Wert keinen Einfluss auf die Download-Geschwindigkeit. In diesem Szenario kann die Einstellung von —concurrency auf einen höheren Wert eine bessere Auswirkung auf die Download-Geschwindigkeit haben.