Je souhaite utiliser AWS S3 cli pour copier une structure de répertoires complète dans un compartiment S3.
Jusqu'ici, tout ce que j'ai essayé copie les fichiers dans le compartiment, mais la structure des répertoires est réduite. (Pour le dire autrement, chaque fichier est copié dans le répertoire racine du compartiment)
La commande que j'utilise est:
aws s3 cp --recursive ./logdata/ s3://bucketname/
J'ai également essayé de laisser la barre oblique de fin sur ma désignation de source (c.-à-d. La copie de l'argument). J'ai également utilisé un caractère générique pour désigner tous les fichiers ... chaque chose que j'essaie copie simplement les fichiers journaux dans le répertoire racine du compartiment.
aws s3 cp --recursive mylocalsrcdir s3://bucket/
placez simplement les fichiers de votre référentiel local dans le compartiment "répertoire racine", le cas échéant,aws s3 cp --recursive mydirectory s3://bucket/mydirectory
la structure de répertoires sera recréée à la fin de la cible.Réponses:
Je crois que la synchronisation est la méthode que vous voulez. Essayez ceci à la place:
la source
aws s3 sync ./logdata s3://bucketname/logdata
Merci pour le rôle principal. --- vJ'avais fait face à cette erreur en utilisant l'une de ces commandes.
J'ai même pensé à monter le compartiment S3 localement, puis à exécuter rsync, même si cela a échoué (ou été bloqué pendant quelques heures) car j'ai des milliers de fichiers.
Enfin, s3cmd a fonctionné comme un charme.
Cela non seulement fait le travail correctement et affiche une sortie assez prolixe sur la console, mais télécharge également de gros fichiers par parties.
la source
Ce qui suit a fonctionné pour moi:
aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive
AWS va ensuite "créer"
this_directory
et copier tout le contenu local dans celui-ci.la source
Utilisez le script suivant pour copier la structure de dossier:
la source
Je n'ai pas pu
s3 sync
ous3 cp
travailler sur un dossier de 55 Go contenant des milliers de fichiers et plus de 2 douzaines de sous-répertoires. Essayer de synchroniser tout le dossier ferait simplement échouer awscli sans rien télécharger dans le compartiment.En fin de compte, nous avons d'abord synchronisé tous les sous-répertoires et leur contenu (la structure des dossiers est préservée):
Ensuite, j'ai fait ceci pour obtenir les 30 000 fichiers au niveau supérieur:
Assurez-vous de surveiller la charge sur le serveur (protip que vous pouvez utiliser
w
pour afficher uniquement la charge) etctrl-z
à suspendre la commande si la charge devient trop élevée. (fg
pour le continuer à nouveau).Mettre ceci ici au cas où cela pourrait aider quelqu'un dans une situation similaire.
Remarques:
-mindepth 1
exclut.
-maxdepth 1
empêche find de lister le contenu des sous-répertoires, cars3 sync
gère ceux-ci avec succès.cut -c 3-
supprime le "./" du début de chaque résultat de find.la source
Sinon, vous pouvez aussi essayer minio client aka mc
J'espère que ça vous aidera.
PS: Je suis l'un des contributeurs du projet.
la source
(Améliorer la solution de Shishir )
s3Copy.sh
)/PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
Par exemple, si
s3Copy.sh
est stocké dans le répertoire de base et que je souhaite copier tous les fichiers et répertoires situés dans le répertoire actuel, je lance ceci:~/s3Copy.sh . s3://XXX/myBucket
Vous pouvez facilement modifier le script pour permettre à d' autres arguments de
s3 cp
tels que--include
,--exclude
...la source