Aws-cli: Option --no-overwrite zu aws s3 cp/mv hinzufügen

Erstellt am 6. Okt. 2017  ·  43Kommentare  ·  Quelle: aws/aws-cli

Es wäre schön, eine Komfortfunktion --no-overwrite für aws s3 cp/mv -Befehle zu haben, die überprüft, ob das Ziel nicht bereits existiert, bevor eine Datei in einen S3-Bucket gestellt wird.

Natürlich kann diese Logik nicht von der AWS-API garantiert werden (afaik...) und ist anfällig für Race-Conditions etc. Aber es wäre hilfreich, unbeabsichtigte Fehler zu vermeiden!

feature-request s3

Hilfreichster Kommentar

Basierend auf dem Feedback der Community haben wir uns entschieden, Funktionsanfragen an GitHub-Issues zurückzugeben.

Alle 43 Kommentare

Kennzeichnung als Funktionsanfrage. Der knifflige Teil, wenn wir es in cp oder mv gemacht haben, ist, dass die CLI möglicherweise S3 abfragen muss, um zu sehen, ob die Datei existiert, bevor sie versucht, sie hochzuladen. Daher kann es sinnvoller sein, es zu sync hinzuzufügen, da dies bereits der Fall ist.

Ich würde das auch gerne in cp und/oder mv sehen.

Der Grund, warum ich derzeit sync dafür nicht verwende, ist, dass sync große Leistungsprobleme hat, wenn der Ziel-Bucket viele vorhandene Dateien im Zielverzeichnis enthält.

Wenn Sie aws s3 cp --recursive newdir s3://bucket/parentdir/ ausführen, besucht es nur jede der Dateien, die es tatsächlich kopiert.

Wenn Sie aws s3 sync newdir s3://bucket/parentdir/ ausführen, besucht es die kopierten Dateien, durchläuft aber auch die gesamte Dateiliste in s3://bucket/parentdir (die möglicherweise bereits Tausende oder Millionen von Dateien enthält) und ruft Metadaten für jede vorhandene Datei ab .

Bei einem ausreichend großen Ziel-Bucket kann aws s3 cp --recursive Sekunden und aws s3 sync Stunden dauern, um dieselben Daten zu kopieren.

Offensichtlich wäre es schön, sync zu reparieren, aber wenn das Hinzufügen einer Abfrage "Überprüfen, ob die Datei bereits vorhanden ist" zu cp hinzugefügt wird, ist das ein handhabbareres Problem als das Überarbeiten des sync -Codes Mach es schnell, es könnte sinnvoll sein, das stattdessen zu tun.

Ich interessiere mich auch sehr für diese Funktion. Eine optionale interaktive Eingabeaufforderung zum Überschreiben von Dateien wäre ebenfalls schön.

ja @sgrimm-sg, es macht Sinn. Ich bin auch daran interessiert, den CLI cp-Befehl zu sehen, der diese Bedingungen tatsächlich handhaben kann.

Es wäre äußerst nützlich, wenn dies eine Option für aws s3 sync wäre. rsync hat diese Funktionalität als --ignore-existing verfügbar. Meine Präferenz wäre, dieselben Optionsnamen wie rsync zu verwenden, da ich vermute, dass viele Leute bereits mit rsync vertraut sind.

Guten Morgen!

Wir schließen dieses Problem hier auf GitHub als Teil unserer Migration zu UserVoice für Funktionsanfragen, die die AWS CLI betreffen.

Auf diese Weise können wir Ihnen die wichtigsten Funktionen zur Verfügung stellen, indem wir es einfacher machen, nach den Funktionen zu suchen und Unterstützung für die Funktionen anzuzeigen, die Ihnen am wichtigsten sind, ohne das Gespräch mit Fehlerberichten zu verwässern.

Als kurze UserVoice-Einführung (falls noch nicht bekannt): Nachdem eine Idee gepostet wurde, können die Leute über die Ideen abstimmen, und das Produktteam antwortet direkt auf die beliebtesten Vorschläge.

Wir haben vorhandene Funktionsanfragen von GitHub importiert - Suchen Sie dort nach diesem Problem!

Und keine Sorge, dieses Problem wird für die Nachwelt weiterhin auf GitHub existieren. Da es sich um einen Nur-Text-Import des ursprünglichen Beitrags in UserVoice handelt, werden wir die Kommentare und Diskussionen, die hier bereits zum GitHub-Problem vorhanden sind, weiterhin berücksichtigen.

GitHub bleibt der Kanal zum Melden von Fehlern.

Auch dieses Problem kann jetzt gefunden werden, indem Sie nach dem Titel suchen auf: https://aws.uservoice.com/forums/598381-aws-command-line-interface

-Das AWS SDKs & Tools-Team

Dieser Eintrag ist speziell auf UserVoice zu finden unter: https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- cp-mv

Verwandt:

Basierend auf dem Feedback der Community haben wir uns entschieden, Funktionsanfragen an GitHub-Issues zurückzugeben.

@jamesls das ist toll! kannst du bitte auf den vorliegenden Vorschlag antworten? --no-overwrite wäre eine großartige Ergänzung und vermeidet das Umwickeln der Aufrufe mit Skripten

+1 zu diesem Problem. Ich schlage -n, --no-clobber vor, um vorhandene cp-Befehlsoptionen von Linux abzugleichen.

Wurde dieser Wunsch umgesetzt? Wenn Sie versuchen, mit Windows-Stapeldateien zu arbeiten, um eine lokale Sicherung > S3 durchzuführen, ist dies die einfachste Methode, ein einfaches No-Overwrite- oder ähnliches Flag.

Irgendwelche Updates bezüglich dieser Funktion?

Irgendwelche Updates bezüglich dieser Funktion? Danke

Irgendwelche Updates bezüglich dieser Funktion?

Irgendwelche Updates bezüglich dieser Funktion?

sev3, +1

Diese Funktion muss wirklich hinzugefügt werden, da die S3-Synchronisierung nicht jede Datei hochzuladen scheint.

Irgendwelche Updates oder Problemumgehungen?

Irgendwelche Updates oder Problemumgehungen?

Ich musste ein Python-Skript schreiben, um alle Elemente im Bucket in ein Array (Liste) zu laden, dann alle Elemente aus dem Verzeichnis zu laden, das ich synchronisieren möchte, dann die Arrays vergleichen und die lokalen Elemente hochladen, die nicht im S3-Array enthalten sind .

Ich musste ein Python-Skript schreiben, um alle Elemente im Bucket in ein Array (Liste) zu laden, dann alle Elemente aus dem Verzeichnis zu laden, das ich synchronisieren möchte, dann die Arrays vergleichen und die lokalen Elemente hochladen, die nicht im S3-Array enthalten sind .

@southpaw5271 - Möchtest du dein Skript teilen und mir etwas Zeit sparen? ; )

Ich musste ein Python-Skript schreiben, um alle Elemente im Bucket in ein Array (Liste) zu laden, dann alle Elemente aus dem Verzeichnis zu laden, das ich synchronisieren möchte, dann die Arrays vergleichen und die lokalen Elemente hochladen, die nicht im S3-Array enthalten sind .

@southpaw5271 - Möchtest du dein Skript teilen und mir etwas Zeit sparen? ; )

Ich scheine es nicht mehr zu haben :( Entschuldigung!

Dieses Flag wäre auch für den Befehl cp wertvoll, da sync es nicht erlaubt, eine Datei zu kopieren, während der Zielname geändert wird.

aws s3 cp --no-overwrite ./somefile s3://bucket/othername

Wir brauchen auch die Option --no-overwrite von s3 nach local. Wir wurden durch versehentliche Überschreibungen von wohlmeinenden Personen verbrannt, und dies wäre eine sehr geschätzte Möglichkeit, eine "Leitplanke" für sie aufzustellen. Danke!

irgendein Update?

Irgendwelche Updates bezüglich dieser Funktion? Danke

+1

+1

Ich übertrage Dateien vom alten System. Ich habe ein Python-Skript, das je nach DB-Spalten unterschiedliche Pfade generiert (dh jede Organisation hat jetzt ihren eigenen Ordner in einem bestimmten Bucket), daher kann ich mich nicht auf den Synchronisierungsbefehl verlassen. Ich könnte ein Skript ausführen, um Teilmigrationen durchzuführen, wenn ein -skip-duplicate oder eine Art Parameter verfügbar wäre.

+1

Das ist dringend nötig. Warum ist es nicht schon da?

+1

+10

Irgendwelche Updates bezüglich dieser Funktion? Danke

Geben Sie bitte auch eine Stimme für dieses Feature ab!

+1

+1

+1

++1

irgendwelche Updates dazu?

+1

Ich kann nicht glauben, dass es immer noch nichts ist. Es ist nahezu unmöglich, einen unveränderlichen Speicher auf S3 zu erstellen :(

Wir haben das Kopieren von Daten aus dem S3-Bucket in den lokalen Linux-Mount initiiert und die Größe am Ziel ist ~ 40 GB kleiner als der S3-Bucket. Finden Sie Möglichkeiten, nur das Fehlende zu kopieren. Es scheint, dass es keine einfache Möglichkeit gibt, dies zu tun, anstatt alles zu kopieren.

Eine Option von aws s3 sync , die etwas Ähnliches erreichen kann, ist das boolesche Flag --size-only , das im Ziel nur dann überschrieben wird, wenn sich die Größe zwischen Quell- und Zielobjekt unterscheidet.

 --size-only (boolean) Makes the size of each key the only criteria used
       to decide whether to sync from source to destination.

Der Befehl, den ich verwendet habe,

aws s3 sync s3://<source bucket> s3://<destination bucket> --size-only 

_Wichtig_: Empfehlen Sie dringend, den obigen Befehl zuerst mit dem booleschen Flag --dry-run auszuführen, um zu sehen, was dieser Befehl beabsichtigt, bevor Sie ihn tatsächlich ausführen, insbesondere wenn Ihre Produktionssysteme betroffen sind. Dies ist aus einer Fülle von Vorsicht.

hilft mir nicht, darauf zu warten, dass #5456 von DH angesprochen wird

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen