Aws-cli: Ajouter l'option --no-overwrite à aws s3 cp/mv

Créé le 6 oct. 2017  ·  43Commentaires  ·  Source: aws/aws-cli

Ce serait bien d'avoir une fonction pratique --no-overwrite pour les commandes aws s3 cp/mv , qui vérifierait que la destination cible n'existe pas déjà avant de placer un fichier dans un compartiment s3.

Bien sûr, cette logique ne peut pas être garantie par l'API AWS (autant que je sache...) et est vulnérable aux conditions de concurrence, etc. Mais il serait utile d'éviter les erreurs involontaires !

feature-request s3

Commentaire le plus utile

Sur la base des commentaires de la communauté, nous avons décidé de renvoyer les demandes de fonctionnalités aux problèmes GitHub.

Tous les 43 commentaires

Marquage en tant que demande de fonctionnalité. La partie délicate si nous l'avons fait en cp ou mv est que la CLI devra peut-être interroger S3 pour voir si le fichier existe avant d'essayer de le télécharger. Il peut donc être plus logique de l'ajouter à sync car il le fait déjà.

J'aimerais voir cela dans cp et/ou mv également.

La raison pour laquelle je n'utilise pas sync pour le moment est que sync a des problèmes de performances majeurs si le compartiment de destination contient de nombreux fichiers existants dans le répertoire cible.

Lorsque vous exécutez aws s3 cp --recursive newdir s3://bucket/parentdir/ , il ne visite que chacun des fichiers qu'il est en train de copier.

Lorsque vous exécutez aws s3 sync newdir s3://bucket/parentdir/ , il visite les fichiers qu'il copie, mais parcourt également la liste complète des fichiers dans s3://bucket/parentdir (qui peut déjà contenir des milliers ou des millions de fichiers) et obtient des métadonnées pour chaque fichier existant .

Sur un compartiment de destination suffisamment grand, aws s3 cp --recursive peut prendre quelques secondes et aws s3 sync peut prendre des heures pour copier les mêmes données.

De toute évidence, réparer sync serait bien, mais si l'ajout d'une requête "vérifier si le fichier existe déjà" à cp est un problème plus traitable que de réorganiser le code sync pour faire vite, il pourrait être logique de le faire à la place.

Je suis également très intéressé par cette fonctionnalité. Une invite interactive facultative pour écraser les fichiers serait également agréable à avoir.

oui @sgrimm-sg, c'est logique. Je suis également intéressé de voir la commande CLI cp qui peut réellement gérer ces conditions.

Il serait extrêmement utile que ce soit une option sur aws s3 sync . rsync a cette fonctionnalité disponible en tant que --ignore-existing . Ma préférence serait d'essayer d'utiliser les mêmes noms d'options que rsync car je soupçonne que beaucoup de gens connaissent déjà rsync .

Bonjour!

Nous fermons ce problème ici sur GitHub, dans le cadre de notre migration vers UserVoice pour les demandes de fonctionnalités impliquant l'AWS CLI.

Cela nous permettra de vous fournir les fonctionnalités les plus importantes, en facilitant la recherche et l'affichage de la prise en charge des fonctionnalités qui vous intéressent le plus, sans diluer la conversation avec des rapports de bogues.

Comme introduction rapide à UserVoice (si ce n'est déjà fait) : après la publication d'une idée, les gens peuvent voter sur les idées, et l'équipe produit répondra directement aux suggestions les plus populaires.

Nous avons importé des demandes de fonctionnalités existantes à partir de GitHub - Recherchez ce problème ici !

Et ne vous inquiétez pas, ce problème existera toujours sur GitHub pour la postérité. Comme il s'agit d'une importation textuelle du message d'origine dans UserVoice, nous garderons toujours à l'esprit les commentaires et les discussions qui existent déjà ici sur le problème GitHub.

GitHub restera le canal de signalement des bogues.

Encore une fois, ce problème peut maintenant être trouvé en recherchant le titre sur : https://aws.uservoice.com/forums/598381-aws-command-line-interface

-L'équipe AWS SDK & Tools

Cette entrée se trouve spécifiquement sur UserVoice à l'adresse : https://aws.uservoice.com/forums/598381-aws-command-line-interface/suggestions/33168406-add-no-overwrite-option-to-aws-s3- cp-mv

En rapport:

Sur la base des commentaires de la communauté, nous avons décidé de renvoyer les demandes de fonctionnalités aux problèmes GitHub.

@jamesls c'est super ! pouvez-vous s'il vous plaît répondre à la suggestion à portée de main? --no-overwrite serait un excellent ajout et éviterait d'envelopper les appels avec des scripts

+1 à ce problème. Je propose -n, --no-clobber pour correspondre aux options de commande Linux cp existantes.

Y a-t-il eu une mise en œuvre de cette demande ? Essayer de travailler avec des fichiers de commandes Windows pour effectuer une sauvegarde locale> S3, c'est la méthode la plus simple, un simple indicateur de non-écrasement ou similaire.

Une mise à jour concernant cette fonctionnalité ?

Une mise à jour concernant cette fonctionnalité ? Merci

Une mise à jour concernant cette fonctionnalité ?

Une mise à jour concernant cette fonctionnalité ?

sév3, +1

Vraiment besoin de cette fonctionnalité ajoutée car la synchronisation S3 ne semble pas télécharger tous les fichiers.

Des mises à jour ou des solutions de contournement ?

Des mises à jour ou des solutions de contournement ?

J'ai dû écrire un script python pour charger tous les éléments du compartiment dans un tableau (liste), puis charger tous les éléments du répertoire que je souhaite synchroniser, puis comparer les tableaux et télécharger les éléments locaux non dans le tableau S3 .

J'ai dû écrire un script python pour charger tous les éléments du compartiment dans un tableau (liste), puis charger tous les éléments du répertoire que je souhaite synchroniser, puis comparer les tableaux et télécharger les éléments locaux non dans le tableau S3 .

@southpaw5271 - voulez-vous partager votre script et me faire gagner du temps ? ; )

J'ai dû écrire un script python pour charger tous les éléments du compartiment dans un tableau (liste), puis charger tous les éléments du répertoire que je souhaite synchroniser, puis comparer les tableaux et télécharger les éléments locaux non dans le tableau S3 .

@southpaw5271 - voulez-vous partager votre script et me faire gagner du temps ? ; )

Je n'ai plus l'impression de l'avoir :( Désolé !

Ce drapeau serait également utile pour la commande cp , car sync ne permet pas de copier un fichier en changeant le nom de la destination.

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

Nous avons également besoin de l'option --no-overwrite de s3 à local. Nous avons été brûlés par des écrasements accidentels d'individus bien intentionnés, et ce serait une façon très appréciée de mettre en place une "garde-fou" pour eux. Merci!

toute mise à jour?

Une mise à jour concernant cette fonctionnalité ? Merci

+1

+1

Je migre des fichiers depuis l'ancien système. J'ai un script python qui génère des chemins différents selon les colonnes de la base de données (c'est-à-dire que chaque organisation a maintenant son propre dossier sur un compartiment spécifique), donc je ne peux pas compter sur la commande sync. Je pourrais exécuter un script pour effectuer des migrations partielles si un paramètre -skip-duplicate ou une sorte de paramètre était disponible.

+1

C'est vraiment nécessaire. Pourquoi n'est-il pas déjà là ?

+1

+10

Une mise à jour concernant cette fonctionnalité ? Merci

Jetez également un vote pour cette fonctionnalité, s'il vous plaît !

+1

+1

+1

++1

des mises à jour à ce sujet ?

+1

Je ne peux pas croire que ce n'est toujours pas une chose. Il est presque impossible de créer un stockage immuable sur S3 :(

Nous avons lancé des données copiées du compartiment S3 vers le montage Linux local et la taille à destination est d'environ 40 Go inférieure à celle du compartiment S3. Trouvez des moyens de ne copier que ce qui manque. Il semble qu'il n'y ait pas de moyen facile de le faire au lieu de tout copier.

Une option de aws s3 sync qui peut accomplir quelque chose de similaire est le drapeau booléen --size-only , qui ne remplacera dans la destination que si la taille diffère entre l'objet source et l'objet de destination,

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

La commande que j'ai utilisée,

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

_Important_ : Suggérez fortement d'exécuter d'abord la commande ci-dessus avec l'indicateur booléen --dry-run , pour voir ce que cette commande a l'intention de faire avant de l'exécuter, surtout si cela implique vos systèmes de production. C'est par excès de prudence.

ne m'aide pas, en attendant que #5456 soit adressé par DH

Cette page vous a été utile?
0 / 5 - 0 notes