Kurs
AWS S3 cp: Der vollständige Leitfaden für AWS S3-Dateiübertragungen
Das manuelle Kopieren von Dateien in den AWS-Speicher kann mühsam, fehleranfällig und ineffizient sein - vor allem, wenn es um große Datenmengen geht. Das willst du nicht.
Die AWS-Befehlszeilenschnittstelle (CLI) bietet ein praktisches Tool namens aws s3 cp
, das diesen Prozess vereinfacht. Mit diesem Befehl kannst du Dateien mit einfachen, skriptfähigen Befehlen, die auf allen Betriebssystemen funktionieren, in und aus Amazon S3-Buckets kopieren. Die Verwendung der AWS CLI spart nicht nur Zeit, sondern ermöglicht auch die Automatisierung von Routineaufgaben bei der Dateiübertragung.
Der Befehl aws s3 cp
bietet viele Optionen für die Handhabung komplexer Dateiübertragungsszenarien. Du kannst einzelne Dateien kopieren, ganze Verzeichnisse rekursiv übertragen, Dateien nach Mustern filtern und sogar verschiedene Speicherklassen zur Kostenoptimierung festlegen.
In diesem Tutorial zeige ich dir alles, was du über die effektive Nutzung von aws s3 cp
wissen musst, von grundlegenden Befehlen bis hin zu fortgeschrittenen Techniken und Automatisierungsstrategien.
> Neu bei AWS und unsicher bei Cloud-Speicher und S3? Unser detailliertered Leitfaden zu S3 und EFS ist der perfekte Ort, um damit zu beginnen. Wenn du dich speziell für S3 interessierst, schau dir unseren ausführlichen S3-Leitfaden an.
Was ist AWS S3 cp?
Der Befehl aws s3 cp
ist ein Dienstprogramm innerhalb der AWS-Befehlszeilenoberfläche, mit dem du Dateien zwischen deinem lokalen System und dem Amazon S3-Speicher kopieren kannst.
Im Wesentlichen soll es ein vertrautes Kommandozeilen-Erlebnis bieten, das dem Standard-Linux-Befehl cp
ähnelt, aber auf die Interaktion mit S3-Buckets zugeschnitten ist.
Im Kern verbindet aws s3 cp
deinen lokalen Rechner und die Cloud-Speicherinfrastruktur von AWS. Wenn du einen aws s3 cp
Befehl ausführst, kümmert sich die AWS CLI um die Authentifizierung und das File Chunking für große Übertragungen und stellt die Datenintegrität während des Kopiervorgangs sicher . Dieses Dienstprogramm unterstützt das Kopieren einzelner Dateien, mehrerer Dateien mit Platzhaltern und ganzer Verzeichnisstrukturen mit rekursiven Operationen.
Die aws s3 cp
kann viele Dinge, ich zähle nur ein paar auf:
- Bidirektionale Übertragungen (Upload zu S3 oder Download von S3).
- Rekursives Kopieren von ganzen Verzeichnisstrukturen.
- Unterstützung für verschiedene S3-Speicherklassen (Standard, Intelligent-Tiering, Glacier, etc.).
- Dateifilterung mithilfe von Include/Exclude-Mustern.
- Erhaltung der Datei-Metadaten während der Übertragung.
- Integration mit AWS Identity and Access Management (IAM) für Sicherheit.
Die Stärke von aws s3 cp
liegt jedoch in seiner Flexibilität und der Integration in das AWS-Ökosystem. Du kannst verschiedene Parameter angeben, um Aspekte wie Speicherklasse, Verschlüsselung, Metadaten, Zugriffskontrolle und mehr zu steuern. Damit eignet es sich für alles, von einfachen, einmaligen Dateiübertragungen bis hin zu komplexen, automatisierten Backup-Lösungen.
Der Befehl unterscheidet sich von der Verwendung der AWS Management Console, die manuelles Navigieren und Klicken erfordert. Der Befehl aws s3 cp
kann direkt von deinem Terminal aus ausgeführt oder in Skripte und automatisierte Arbeitsabläufe eingebunden werden. Dieser programmatische Zugang zu S3 ist für viele Tech-Profis, insbesondere DevOps-Ingenieure und Datenwissenschaftler, unerlässlich.
Zusammenfassend lässt sich sagen, dass aws s3 cp
eine zuverlässige, skriptfähige Lösung ist, die massive Übertragungen bei gleichbleibender Leistung bewältigen kann. Sie kann unterbrochene Up- und Downloads wieder aufnehmen, was besonders bei instabilen Netzwerkverbindungen oder bei der Übertragung extrem großer Dateien nützlich ist.
Als Nächstes führe ich dich durch den langweiligen Teil - die Einrichtung von AWS CLI auf deinem System.
Einrichten der AWS CLI und AWS S3
Bevor du den Befehl aws s3 cp
ausführst, musst du AWS CLI auf deinem System installiert und richtig konfiguriert haben. Keine Sorge, wenn du noch nie mit AWS gearbeitet hast - der Einrichtungsprozess ist einfach und sollte weniger als 10 Minuten dauern.
Ich werde dies in drei einfache Phasen unterteilen: die Installation des AWS CLI-Tools, die Konfiguration deiner Anmeldedaten und die Erstellung deines ersten S3-Buckets für die Speicherung.
Installation der AWS CLI
Je nachdem, welches Betriebssystem du verwendest, unterscheidet sich der Installationsprozess leicht.
Für Windows-Systeme:
- Navigiere zur offiziellen AWS CLI-Dokumentationsseite
- Schnapp dir das 64-Bit-Windows-Installationsprogramm
- Starte die heruntergeladene Datei und folge dem Installationsassistenten
Für Linux-Systeme:
Führe die folgenden drei Befehle über das Terminal aus:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Für macOS-Systeme:
Angenommen, du hast Homebrew installiert, dann führe diese eine Zeile im Terminal aus:
brew install awscli
Wenn du kein Homebrew hast, kannst du stattdessen diese beiden Befehle verwenden:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Um die erfolgreiche Installation zu bestätigen, führe aws --version
in deinem Terminal aus. Du solltest so etwas wie das hier sehen:
Abbildung 1 - AWS CLI-Version
Konfigurieren der AWS CLI
Nachdem du die CLI installiert hast, musst du deine AWS-Anmeldedaten für die Authentifizierung einrichten.
Greife zunächst auf dein AWS-Konto zu und navigiere zum IAM-Service-Dashboard. Erstelle einen neuen Benutzer mit programmatischem Zugriff und füge die entsprechende S3-Berechtigungsrichtlinie hinzu:
Abbildung 2 - AWS IAM-Benutzer
Als Nächstes besuchst du die Registerkarte "Sicherheitszugangsdaten" und erstellst ein neues Schlüsselpaar. Achte darauf, dass du sowohl die Zugangsschlüssel-ID als auch den geheimen Zugangsschlüssel an einem sicheren Ort speicherst - Amazon wird dir den geheimen Schlüssel nach diesem Bildschirm nicht mehr anzeigen:
Abbildung 3 - AWS IAM-Benutzeranmeldeinformationen
Öffne nun dein Terminal und führe den Befehl aws configure
aus. Du wirst nach vier Informationen gefragt: deine Zugangsschlüssel-ID, dein geheimer Zugangsschlüssel, deine Standardregion (ich verwende eu-central-1
) und dein bevorzugtes Ausgabeformat (normalerweise json
):
Abbildung 4 - AWS CLI-Konfiguration
Um sicherzustellen, dass alles richtig angeschlossen ist, überprüfe deine Identität mit dem folgenden Befehl:
aws sts get-caller-identity
Wenn du richtig konfiguriert bist, siehst du deine Kontodaten:
Abbildung 5 - AWS CLI-Befehl zum Testen der Verbindung
Einen S3-Bucket erstellen
Schließlich musst du einen S3-Bucket erstellen, um die zu kopierenden Dateien zu speichern.
Gehe in deiner AWS-Konsole in den Bereich S3-Service und klicke auf "Bucket erstellen". Denke daran, dass Bucket-Namen in ganz AWS global eindeutig sein müssen. Wähle einen aussagekräftigen Namen, lass die Standardeinstellungen vorerst stehen und klicke auf "Erstellen":
Abbildung 6 - Erstellung eines AWS Buckets
Sobald er erstellt ist, erscheint dein neuer Bucket in der Konsole. Du kannst seine Existenz auch über die Kommandozeile bestätigen:
aws s3 ls
Abbildung 7 - Alle verfügbaren S3-Buckets
Alle S3-Buckets sind standardmäßig als privat konfiguriert, also beachte dies. Wenn du diesen Bucket für öffentlich zugängliche Dateien nutzen willst, musst du die Bucket-Richtlinien entsprechend anpassen.
Jetzt bist du bestens gerüstet, um den Befehl aws s3 cp
zum Übertragen von Dateien zu verwenden. Beginnen wir als Nächstes mit den Grundlagen.
Grundlegende AWS S3 cp Befehlssyntax
Nachdem du nun alles konfiguriert hast, können wir uns mit der grundlegenden Verwendung des aws s3 cp
Befehls beschäftigen. Wie bei AWS üblich, liegt die Schönheit in der Einfachheit, auch wenn der Befehl verschiedene Dateiübertragungsszenarien verarbeiten kann.
In seiner einfachsten Form folgt der Befehl aws s3 cp
dieser Syntax:
aws s3 cp <source> <destination> [options]
Dabei können
und lokale Dateipfade oder S3 URIs (die mit
s3://
beginnen) sein. Schauen wir uns die drei häufigsten Anwendungsfälle an.
Kopieren einer Datei von lokal nach S3
Um eine Datei von deinem lokalen System in einen S3-Bucket zu kopieren, ist die Quelle ein lokaler Pfad und das Ziel ein S3-URI:
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Mit diesem Befehl wird die Datei test_file.txt
aus dem angegebenen Verzeichnis in den angegebenen S3-Bucket hochgeladen. Wenn der Vorgang erfolgreich ist, siehst du eine Konsolenausgabe wie diese:
Abbildung 8 - Konsolenausgabe nach dem Kopieren der lokalen Datei
In der AWS-Verwaltungskonsole siehst du dann, dass deine Datei hochgeladen wurde:
Abbildung 9 - Inhalt des S3-Buckets
Wenn du einen lokalen Ordner in deinen S3-Bucket kopieren und ihn, sagen wir, in einen anderen verschachtelten Ordner legen willst, führst du einen ähnlichen Befehl wie diesen aus:
aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive
Abbildung 10 - Inhalt des S3-Buckets nach dem Hochladen eines Ordners
Das --recursive
Flag sorgt dafür, dass alle Dateien und Unterordner innerhalb des Ordners kopiert werden.
Vergiss nicht, dass S3 eigentlich keine Ordner hat - die Pfadstruktur ist nur ein Teil des Objektschlüssels, aber sie funktioniert konzeptionell wie Ordner.
Kopieren einer Datei von S3 nach lokal
Um eine Datei von S3 auf dein lokales System zu kopieren, kehrst du einfach die Reihenfolge um - die Quelle wird zur S3 URI und das Ziel ist dein lokaler Pfad:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Dieser Befehl lädt test_file.txt
von deinem S3-Bucket herunter und speichert es als downloaded_test_file.txt
in dem angegebenen Verzeichnis. Du wirst es sofort auf deinem lokalen System sehen:
Abbildung 11 - Herunterladen einer einzelnen Datei von S3
Wenn du den Zieldateinamen nicht angibst, verwendet der Befehl den ursprünglichen Dateinamen:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .
Abbildung 12 - Inhalt der heruntergeladenen Datei
Der Punkt (.
) steht für dein aktuelles Verzeichnis, d.h. test_file.txt
wird in dein aktuelles Verzeichnis heruntergeladen.
Und um ein ganzes Verzeichnis herunterzuladen, kannst du einen ähnlichen Befehl wie diesen verwenden:
aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive
Abbildung 13 - Inhalt des heruntergeladenen Ordners
Denke daran, dass das --recursive
Flag wichtig ist, wenn du mit mehreren Dateien arbeitest - ohne es schlägt der Befehl fehl, wenn die Quelle ein Verzeichnis ist.
Mit diesen grundlegenden Befehlen kannst du bereits die meisten der benötigten Dateiübertragungsaufgaben erledigen. Im nächsten Abschnitt lernst du erweiterte Optionen kennen, die dir eine bessere Kontrolle über den Kopiervorgang geben.
Erweiterte AWS S3 cp Optionen und Funktionen
AWS bietet eine Reihe erweiterter Optionen, mit denen du das Kopieren von Dateien optimieren kannst. In diesem Abschnitt zeige ich dir einige der nützlichsten Flaggen und Parameter, die dir bei deinen täglichen Aufgaben helfen.
Verwendung der Flags --exclude und --include
Manchmal möchtest du nur bestimmte Dateien kopieren, die bestimmten Mustern entsprechen. Mit den Flags --exclude
und --include
kannst du Dateien anhand von Mustern filtern und genau kontrollieren, was kopiert wird.
Das ist die Verzeichnisstruktur, mit der ich arbeite:
Abbildung 14 - Verzeichnisstruktur
Nehmen wir an, du willst alle Dateien aus dem Verzeichnis kopieren, außer den .log
Dateien:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"
Mit diesem Befehl werden alle Dateien aus dem Verzeichnis advanced_folder
nach S3 kopiert, mit Ausnahme aller Dateien mit der Erweiterung .log
:
Abbildung 15 - Ergebnisse beim Kopieren von Ordnern
Du kannst auch mehrere Muster kombinieren. Nehmen wir an, du willst nur die HTML- und CSS-Dateien aus dem Projektordner kopieren:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"
Dieser Befehl schließt zunächst alles aus (--exclude "*"
) und schließt dann nur Dateien mit den Erweiterungen .html
und .css
ein. Das Ergebnis sieht so aus:
Abbildung 16 - Ergebnisse der Ordnungskopie (2)
Beachte, dass die Reihenfolge der Flags wichtig ist - AWS CLI verarbeitet diese Flags der Reihe nach. Wenn du also --include
vor --exclude
einträgst, erhältst du andere Ergebnisse:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Dieses Mal wurde nichts in den Eimer kopiert:
Abbildung 17 - Ergebnisse beim Kopieren von Ordnern (3)
Festlegen der S3-Speicherklasse
Amazon S3 bietet verschiedene Speicherklassen an, die jeweils unterschiedliche Kosten und Abrufeigenschaften haben. Standardmäßig lädt aws s3 cp
Dateien in die Speicherklasse Standard hoch, aber du kannst mit dem Flag --storage-class
eine andere Klasse angeben:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Mit diesem Befehl wird large-archive.zip
in die Speicherklasse Glacier hochgeladen, die deutlich günstiger ist, aber höhere Abrufkosten und längere Abrufzeiten hat:
Abbildung 18 - Kopieren von Dateien in S3 mit verschiedenen Speicherklassen
Zu den verfügbaren Speicherklassen gehören:
STANDARD
(Standard): Universell einsetzbarer Speicher mit hoher Haltbarkeit und Verfügbarkeit.REDUCED_REDUNDANCY
(nicht mehr empfohlen): Geringere Haltbarkeit, kostensparende Option, jetzt veraltet.STANDARD_IA
(Infrequent Access): Kostengünstigerer Speicher für Daten, auf die weniger häufig zugegriffen wird.ONEZONE_IA
(Single Zone Infrequent Access): Kostengünstiger Speicher mit seltenem Zugriff in einer einzigen AWS Availability Zone.INTELLIGENT_TIERING
: Verschiebt Daten auf der Grundlage von Zugriffsmustern automatisch zwischen den Speicherschichten.GLACIER
: Kostengünstige Archivierung für langfristige Aufbewahrung, Abruf innerhalb von Minuten bis Stunden.DEEP_ARCHIVE
: Günstigster Archivierungsspeicher, Abruf innerhalb von Stunden, ideal für die Langzeitsicherung.
Wenn du Dateien sicherst, auf die du nicht sofort zugreifen musst, kannst du mit GLACIER
oder DEEP_ARCHIVE
erhebliche Speicherkosten sparen.
Synchronisieren von Dateien mit dem Flag --exact-timestamps
Wenn du Dateien in S3 aktualisierst, die bereits existieren, möchtest du vielleicht nur die Dateien kopieren, die sich geändert haben. Das --exact-timestamps
Flag hilft dabei, indem es Zeitstempel zwischen Quelle und Ziel vergleicht.
Hier ist ein Beispiel:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps
Mit diesem Flag kopiert der Befehl nur Dateien, deren Zeitstempel sich von den Dateien unterscheiden, die sich bereits in S3 befinden. Das kann die Übertragungszeit und die Bandbreitennutzung reduzieren, wenn du regelmäßig eine große Anzahl von Dateien aktualisierst.
Warum ist das also nützlich? Stell dir Verteilungsszenarien vor, in denen du deine Anwendungsdateien aktualisieren möchtest, ohne unnötigerweise unveränderte Assets zu übertragen.
Während --exact-timestamps
nützlich ist, um eine Art von Synchronisation durchzuführen, solltest du, wenn du eine anspruchsvollere Lösung brauchst, aws s3 sync
statt aws s3 cp
verwenden. Der Befehl sync
wurde speziell dafür entwickelt, Verzeichnisse synchron zu halten und verfügt über zusätzliche Funktionen für diesen Zweck. Ich habe alles über den Sync-Befehl im AWS S3 Sync-Tutorial geschrieben.
Mit diesen erweiterten Optionen hast du jetzt eine viel feinere Kontrolle über deine S3-Dateivorgänge. Du kannst bestimmte Dateien anvisieren, die Speicherkosten optimieren und deine Dateien effizient aktualisieren. Im nächsten Abschnitt erfährst du, wie du diese Vorgänge mithilfe von Skripten und geplanten Aufgaben automatisieren kannst.
Automatisieren von Dateiübertragungen mit AWS S3 cp
Bis jetzt hast du gelernt, wie du Dateien manuell über die Kommandozeile in und aus S3 kopierst. Einer der größten Vorteile von aws s3 cp
ist, dass du diese Überweisungen ganz einfach automatisieren kannst, was dir eine Menge Zeit spart.
Im Folgenden erfahren wir, wie du den Befehl aws s3 cp
in Skripte und geplante Aufträge integrieren kannst, um Dateien ohne großen Aufwand zu übertragen.
AWS S3 cp in Skripten verwenden
Hier ist ein einfaches Beispiel für ein Bash-Skript, das ein Verzeichnis in S3 sichert, dem Backup einen Zeitstempel hinzufügt und die Fehlerbehandlung und Protokollierung in einer Datei implementiert:
#!/bin/bash
# Set variables
SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder"
BUCKET="s3://testbucket-aws-cp-dradecic/backups"
DATE=$(date +%Y-%m-%d-%H-%M)
BACKUP_NAME="backup-$DATE"
LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log"
# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"
# Create the backup and log the output
echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE
aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE
# Check if the backup was successful
if [ $? -eq 0 ]; then
echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE
else
echo "Backup failed on $DATE" | tee -a $LOG_FILE
fi
Speichere es unter backup.sh
, mach es mit chmod +x backup.sh
ausführbar und schon hast du ein wiederverwendbares Backup-Skript!
Du kannst es dann mit dem folgenden Befehl ausführen:
./backup.sh
Abbildung 19 - Skript läuft im Terminal
Unmittelbar danach wird der Ordner backups
auf dem Bucket gefüllt:
Abbildung 20 - Backup im S3-Bucket gespeichert
Wir gehen noch einen Schritt weiter und lassen das Skript nach einem Zeitplan laufen.
Dateiübertragungen mit Cron-Jobs planen
Nachdem du nun ein Skript erstellt hast, musst du es zu bestimmten Zeiten automatisch ausführen lassen.
Wenn du mit Linux oder macOS arbeitest, kannst du cron
verwenden, um deine Backups zu planen. Hier erfährst du, wie du einen Cronjob einrichtest, der dein Backup-Skript jeden Tag um Mitternacht ausführt:
1. Öffne deine crontab zur Bearbeitung:
crontab -e
2. Füge die folgende Zeile hinzu, um dein Skript täglich um Mitternacht auszuführen:
0 0 * * * /path/to/your/backup.sh
Abbildung 21 - Cron-Job für die tägliche Ausführung des Skripts
Das Format für Cron-Jobs ist minute hour day-of-month month day-of-week command
. Hier sind ein paar weitere Beispiele:
- Läuft jede Stunde:
0 * * * * /path/to/your/backup.sh
- Laufen jeden Montag um 9 Uhr:
0 9 * * 1 /path/to/your/backup.sh
- Läuft am 1. eines jeden Monats:
0 0 1 * * /path/to/your/backup.sh
Und das war's! Das Skript backup.sh
wird nun in dem geplanten Intervall ausgeführt.
Die Automatisierung deiner S3-Dateiübertragungen ist ein guter Weg. Es ist besonders nützlich für Szenarien wie:
- Tägliche Backups von wichtigen Daten
- Produktbilder mit einer Website synchronisieren
- Verschieben von Protokolldateien in den Langzeitspeicher
- Aktualisierte Website-Dateien bereitstellen
Automatisierungstechniken wie diese helfen dir, ein zuverlässiges System einzurichten, das Dateiübertragungen ohne manuelle Eingriffe abwickelt. Du musst es nur einmal schreiben und dann kannst du es vergessen.
Im nächsten Abschnitt gehe ich auf einige Best Practices ein, die deinen aws s3 cp
Betrieb sicherer und effizienter machen.
Best Practices für die Verwendung von AWS S3 cp
Der Befehl aws s3 cp
ist zwar einfach zu bedienen, aber es kann auch etwas schiefgehen.
Wenn du die Best Practices befolgst, vermeidest du häufige Fallstricke, optimierst die Leistung und sorgst für die Sicherheit deiner Daten. Lass uns diese Praktiken erkunden, um deine Dateiübertragungsvorgänge effizienter zu machen.
Effiziente Dateiverwaltung
Wenn du mit S3 arbeitest, sparst du Zeit und Kopfschmerzen, wenn du deine Dateien logisch organisierst.
Legezunächst eine einheitliche Namenskonvention für Eimer und Präfixe fest:. Du kannst deine Daten zum Beispiel nach Umgebung, Anwendung oder Datum trennen:
s3://company-backups/production/database/2023-03-13/
s3://company-backups/staging/uploads/2023-03/
Diese Art der Organisation macht es einfacher,..:
- Finde bestimmte Dateien, wenn du sie brauchst.
- Wende Bucket-Policies und Berechtigungen auf der richtigen Ebene an.
- Richte Lebenszyklusregeln für die Archivierung oder Löschung alter Daten ein.
Noch ein Tipp: Wenn du große Mengen an Dateien übermittelst, solltest du kleine Dateien vor dem Hochladen in Gruppen zusammenfassen (mit zip oder tar). Dadurch wird die Anzahl der API-Aufrufe an S3 reduziert, was die Kosten senken und die Übertragung beschleunigen kann.
# Instead of copying thousands of small log files
# tar them first, then upload
tar -czf example-logs-2025-03.tar.gz /var/log/application/
aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/
Handhabung großer Datenübertragungen
Wenn du große Dateien oder viele Dateien auf einmal kopierst, gibt es ein paar Techniken, die den Prozess zuverlässiger und effizienter machen.
Du kannst das --quiet
Flag verwenden, um Ausgabe zu reduzieren bei der Ausführung in Skripten:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Dadurch werden die Fortschrittsinformationen für jede Datei unterdrückt, was die Logs übersichtlicher macht. Außerdem wird dadurch die Leistung leicht verbessert.
Für sehr große Dateien solltest du die Verwendung von mehrteilige Uploads mit dem --multipart-threshold
Flag:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
Mit der obigen Einstellung wird AWS CLI angewiesen, Dateien, die größer als 100 MB sind, für den Upload in mehrere Teileaufzuteilen. Das hat einige Vorteile:
- Wenn die Verbindung unterbrochen wird, muss nur der betroffene Teil erneut versucht werden.
- Die Teile können parallel hochgeladen werden, was den Durchsatz erhöhen kann.
- Du kannst große Uploads pausieren und fortsetzen.
Wenn Übertragung von Daten zwischen Regionenerwäge, S3 Transfer Acceleration für schnellere Uploads zu nutzen:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
Die oben beschriebene Methode leitet deinen Transfer durch das Amazon-Edge-Netzwerk, was regionsübergreifende Transfers erheblich beschleunigen kann.
Gewährleistung der Sicherheit
Bei der Arbeit mit deinen Daten in der Cloud sollte die Sicherheit immer an erster Stelle stehen.
Stelle zunächst sicher, dass deine IAM-Berechtigungen dem Prinzip der geringsten Berechtigung folgen. Gewähre nur die spezifischen Berechtigungen, die für jede Aufgabe benötigt werden.
Hier ist ein Beispiel für eine Richtlinie, die du dem Benutzer zuweisen kannst:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*"
}
]
}
Diese Richtlinie erlaubt nur das Kopieren von Dateien in und aus dem Präfix "backups" in "my-bucket".
Eine weitere Möglichkeit, die Sicherheit zu erhöhen, ist die Aktivierung der Verschlüsselung für sensible Daten. Du kannst beim Hochladen eine serverseitige Verschlüsselung angeben:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Für mehr Sicherheit kannst du auch den AWS Key Management Service (KMS) verwenden:
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
Für hochsensible Vorgänge solltest du jedoch die Verwendung von VPC-Endpunkten für S3 in Betracht ziehen . Dadurch bleibt dein Datenverkehr innerhalb des AWS-Netzwerks und vermeidet das öffentliche Internet vollständig.
Im nächsten Abschnitt erfährst du, wie du häufige Probleme, die bei der Arbeit mit diesem Befehl auftreten können, beheben kannst.
Fehlerbehebung bei AWS S3 cp-Fehlern
Eines ist sicher - bei der Arbeit mit aws s3 cp
wirst du gelegentlich auf Probleme stoßen. Aber wenn du die häufigsten Fehler und ihre Lösungen kennst, sparst du dir Zeit und Frustration, wenn die Dinge nicht so laufen wie geplant.
In diesem Abschnitt zeige ich dir die häufigsten Probleme und wie du sie beheben kannst.
Häufige Fehler und deren Behebung
Fehler: "Zugriff verweigert"
Das ist wahrscheinlich der häufigste Fehler, dem du begegnen wirst:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Das bedeutet normalerweise eines von drei Dingen:
- Dein IAM-Benutzer hat nicht genügend Rechte, um den Vorgang durchzuführen.
- Die Bucket-Policy schränkt den Zugang ein.
- Deine AWS-Anmeldedaten sind abgelaufen.
So behebst du Probleme:
- Überprüfe deine IAM-Berechtigungen, um sicherzustellen, dass du die notwendigen
s3:PutObject
(für Uploads) oders3:GetObject
(für Downloads) Berechtigungen hast. - Vergewissere dich, dass die Bucket Policy deine Aktionen nicht einschränkt.
- Führe
aws configure
aus, um deine Anmeldedaten zu aktualisieren, wenn sie abgelaufen sind.
Fehler: "No such file or directory"
Dieser Fehler tritt auf, wenn die lokale Datei oder das Verzeichnis, das du zu kopieren versuchst, nicht existiert:
upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found
Die Lösung ist einfach - überprüfe deine Dateipfade sorgfältig. Bei Pfaden wird zwischen Groß- und Kleinschreibung unterschieden, behalte das also im Hinterkopf. Achte außerdem darauf, dass du dich im richtigen Verzeichnis befindest, wenn du relative Pfade verwendest.
Fehler: "Der angegebene Eimer existiert nicht"
Wenn du diesen Fehler siehst:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist
Prüfe auf:
- Tippfehler in deinem Eimernamen.
- Ob du die richtige AWS-Region verwendest.
- Wenn der Bucket tatsächlich existiert (er könnte gelöscht worden sein).
Du kannst alle deine Buckets mit aws s3 ls
auflisten, um den richtigen Namen zu bestätigen.
Fehler: "Zeitüberschreitung der Verbindung"
Netzwerkprobleme können Timeouts bei der Verbindung verursachen:
upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout
Um dies zu lösen:
- Überprüfe deine Internetverbindung.
- Versuche, kleinere Dateien zu verwenden oder aktiviere mehrteilige Uploads für große Dateien.
- Erwäge die Verwendung von AWS Transfer Acceleration für eine bessere Leistung.
Umgang mit Upload-Fehlern
Bei der Übertragung großer Dateien ist die Wahrscheinlichkeit von Fehlern viel größer. Wenn das der Fall ist, versuche, Misserfolge anständig zu behandeln.
Du kannst zum Beispiel das --only-show-errors
Flag verwenden, um die Fehlerdiagnose in Skripten zu erleichtern:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors
Dadurch werden Meldungen über erfolgreiche Übertragungen unterdrückt und nur Fehler angezeigt, was die Fehlersuche bei großen Übertragungen erheblich erleichtert.
Um unterbrochene Übertragungen zu behandeln, überspringt der Befehl --recursive
automatisch Dateien, die im Ziel bereits mit derselben Größe vorhanden sind. Um gründlicher zu sein, kannst du jedoch die in der AWS CLI integrierten Wiederholungsversuche für Netzwerkproblemeverwenden, indem du diese Umgebungsvariablen setzt:
export AWS_RETRY_MODE=standard
export AWS_MAX_ATTEMPTS=5
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/
Damit wird die AWS CLI angewiesen, fehlgeschlagene Operationen bis zu 5 Mal automatisch zu wiederholen.
Für sehr große Datenmengen solltest du jedoch aws s3 sync
statt cp
verwenden, da es besser mit Unterbrechungen umgehen kann:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
Der Befehl sync
überträgt nur Dateien, die sich von denen unterscheiden, die sich bereits im Ziel befinden, und eignet sich daher perfekt für die Wiederaufnahme unterbrochener großer Übertragungen.
Wenn du diese häufigen Fehler verstehst und eine angemessene Fehlerbehandlung in deinen Skripten implementierst, werden deine S3-Kopiervorgänge viel robuster und zuverlässiger.
Zusammenfassend AWS S3 cp
Zusammenfassend lässt sich sagen, dass der Befehl aws s3 cp
eine zentrale Anlaufstelle für das Kopieren von lokalen Dateien nach S3 und umgekehrt ist.
In diesem Artikel erfährst du alles darüber. Du hast mit den Grundlagen und der Umgebungskonfiguration begonnen und schließlich geplante und automatisierte Skripte zum Kopieren von Dateien geschrieben. Du hast auch gelernt, wie du einige häufige Fehler und Herausforderungen beim Verschieben von Dateien, insbesondere von großen Dateien, meistern kannst.
Wenn du also ein Entwickler, ein Datenexperte oder ein Systemadministrator bist, wirst du diesen Befehl sicher nützlich finden. Am besten gewöhnst du dich daran, indem du es regelmäßig benutzt. Vergewissere dich, dass du die Grundlagen verstehst, und verbringe dann einige Zeit damit, lästige Teile deiner Arbeit zu automatisieren.
Um mehr über AWS zu erfahren, besuche diese Kurse von DataCamp:
Du kannst dich mit DataCamp sogar auf die AWS-Zertifizierungsprüfungen vorbereiten - AWS Cloud Practitioner (CLF-C02).
FAQs
Was ist der Befehl aws s3 cp, und wofür kann er verwendet werden?
Der Befehl aws s3 cp
ist ein Dienstprogramm innerhalb der AWS-Befehlszeilenoberfläche, mit dem du Dateien zwischen deinem lokalen System und dem Amazon S3-Speicher kopieren kannst. Es wurde entwickelt, um eine vertraute Kommandozeilenerfahrung zu bieten, die dem Standard-Linux-Befehl cp ähnelt, aber auf die Interaktion mit S3-Buckets zugeschnitten ist. Du kannst sie für bidirektionale Übertragungen, das rekursive Kopieren ganzer Verzeichnisstrukturen, das Filtern von Dateien anhand von Mustern und sogar das Festlegen verschiedener Speicherklassen zur Kostenoptimierung verwenden. Es ist besonders nützlich für DevOps-Ingenieure, Datenwissenschaftler und Systemadministratoren, die Daten in S3-Buckets effizient verwalten müssen.
Wie richte ich die AWS CLI so ein, dass sie den Befehl aws s3 cp verwendet?
Um AWS CLI für die Verwendung des Befehls aws s3 cp einzurichten, musst du AWS CLI auf deinem System installieren, es mit deinen AWS-Anmeldedaten konfigurieren und einen S3-Bucket erstellen. Der Installationsprozess ist je nach Betriebssystem (Windows, Linux oder macOS) leicht unterschiedlich. Nach der Installation musst du den Befehl aws configure ausführen und deine Zugangsschlüssel-ID, den geheimen Zugangsschlüssel, die Standardregion und das bevorzugte Ausgabeformat angeben. Schließlich musst du einen S3-Bucket erstellen, entweder über die AWS Management Console oder direkt über die AWS CLI.
Was sind die grundlegende Syntax und die häufigsten Anwendungsfälle für aws s3 cp?
Die grundlegende Syntax für aws s3 cp ist aws s3 cp
, wobei Quelle und Ziel lokale Dateipfade oder S3 URIs sein können (beginnend mit s3://
). Häufige Anwendungsfälle sind das Hochladen einer Datei von deinem lokalen System auf S3, das Herunterladen einer Datei von S3 auf dein lokales System und das rekursive Kopieren ganzer Verzeichnisse mit dem --recursive
Flag. Du kannst den Befehl auch verwenden, um Dateien zwischen verschiedenen S3-Buckets zu kopieren, unterschiedliche Namen für Zieldateien festzulegen und Dateien in verschachtelten "Ordnerstrukturen" innerhalb deiner Buckets zu organisieren.
Wie kann ich die Flags --exclude und --include verwenden, um bestimmte Dateien zu filtern?
Mit den Flags --exclude
und --include
kannst du Dateien nach bestimmten Mustern filtern, wenn du aws s3 cp verwendest. So kannst du genau kontrollieren, was kopiert wird. Du kannst z.B. alle Dateien aus einem Verzeichnis kopieren, außer denen mit bestimmten Erweiterungen (z.B. --exclude "*.log"
), oder du kannst nur bestimmte Dateitypen auswählen (z.B. --include "*.html" --include "*.css"
, nachdem du zuerst alles mit --exclude "*"
ausgeschlossen hast). Die Reihenfolge dieser Flags ist wichtig, da AWS CLI sie nacheinander verarbeitet. Dadurch ist es möglich, ausgefeilte Filterregeln für komplexe Dateiübertragungsszenarien zu erstellen.
Was ist der Unterschied zwischen aws s3 cp mit --exact-timestamps und aws s3 sync?
Obwohl beide Befehle zum Aktualisieren von Dateien in S3 verwendet werden können, haben sie unterschiedliche Zwecke und Verhaltensweisen. Der Befehl aws s3 cp mit dem Flag --exact-timestamps
kopiert nur Dateien, deren Zeitstempel sich von denen in S3 unterscheiden, was die Übertragungszeit und die Bandbreitennutzung bei der Aktualisierung von Dateien reduzieren kann. aws s3 sync wurde jedoch speziell für die Synchronisierung von Verzeichnissen entwickelt und bietet ausgefeiltere Synchronisierungsfunktionen. Wenn du regelmäßig große Mengen an Dateien aktualisieren musst und nur das übertragen willst, was sich geändert hat, ist aws s3 sync in der Regel die bessere Option, obwohl aws s3 cp mit --exact-timestamps für einfachere Synchronisationsanforderungen funktionieren kann.
Lerne mehr über AWS mit diesen Kursen!
Kurs
Einführung in AWS Boto in Python
Kurs
AWS-Konzepte für Sicherheit und Kostenmanagement
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
15 Min.

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.
Der Blog