Chcę użyć AWS S3 cli, aby skopiować pełną strukturę katalogów do segmentu S3.
Do tej pory wszystko, co próbowałem, kopiuje pliki do wiadra, ale struktura katalogów jest zwinięta. (inaczej mówiąc, każdy plik jest kopiowany do katalogu głównego wiadra)
Polecenie, którego używam to:
aws s3 cp --recursive ./logdata/ s3://bucketname/
Próbowałem także pominąć końcowy ukośnik na moim oznaczeniu źródłowym (tj. Kopii z argumentu). Użyłem również symbolu wieloznacznego do oznaczenia wszystkich plików ... próbuję po prostu skopiować pliki dziennika do katalogu głównego wiadra.
amazon-web-services
amazon-s3
agentv
źródło
źródło
aws s3 cp --recursive mylocalsrcdir s3://bucket/
to zrobisz, po prostu umieści pliki w lokalnym repozytorium w „katalogu głównym” wiadra. Jeśli to zrobiszaws s3 cp --recursive mydirectory s3://bucket/mydirectory
, odtworzy strukturę katalogów na docelowym końcu.Odpowiedzi:
Wierzę, że synchronizacja jest metodą, którą chcesz. Spróbuj zamiast tego:
źródło
aws s3 sync ./logdata s3://bucketname/logdata
dzięki za prowadzenie. --- vNapotkałem ten błąd podczas korzystania z jednego z tych poleceń.
Pomyślałem nawet o zamontowaniu łyżki S3 lokalnie, a następnie uruchomieniu rsync, nawet jeśli się nie udało (lub zawiesiłem na kilka godzin), ponieważ mam tysiące plików.
Wreszcie s3cmd działało jak urok.
To nie tylko dobrze się sprawdza i pokazuje dość szczegółowe dane wyjściowe na konsoli, ale także przesyła duże pliki w częściach.
źródło
Dla mnie działało:
aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive
AWS „zrobi”
this_directory
i skopiuje do niej całą zawartość lokalną.źródło
Użyj następującego skryptu do skopiowania struktury folderów:
źródło
Nie mogłem dostać
s3 sync
anis3 cp
pracować nad folderem o pojemności 55 GB z tysiącami plików i ponad 2 tuzinami podkatalogów. Próba zsynchronizowania całego folderu spowodowałaby tylko awarię awscli po cichu bez przesyłania niczego do wiadra.Skończyło się na tym, aby najpierw zsynchronizować wszystkie podkatalogi i ich zawartość (struktura folderów została zachowana):
Następnie zrobiłem to, aby uzyskać 30 000 plików na najwyższym poziomie:
Pamiętaj, aby obserwować obciążenie serwera (protip, którego możesz użyć,
w
aby po prostu pokazać obciążenie) ictrl-z
zawiesić polecenie, jeśli obciążenie jest zbyt wysokie. (fg
aby kontynuować to ponownie).Umieszczenie tego tutaj na wypadek, gdyby pomógł każdemu w podobnej sytuacji.
Uwagi:
-mindepth 1
wyklucza.
-maxdepth 1
zapobiega znalezieniu przez podkatalogi zawartości podkatalogów, ponieważs3 sync
obsługuje je z powodzeniem.cut -c 3-
usuwa „./” z początku każdego wyniku z find.źródło
Możesz też wypróbować klienta minio, znanego również jako mc
Mam nadzieję, że to pomoże.
PS: Jestem jednym z współpracowników projektu.
źródło
(Ulepszenie rozwiązania Shishir )
s3Copy.sh
)/PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
Na przykład, jeśli
s3Copy.sh
jest przechowywany w katalogu osobistym i chcę skopiować wszystkie pliki i katalogi znajdujące się w bieżącym katalogu, uruchomię to:~/s3Copy.sh . s3://XXX/myBucket
Można łatwo zmodyfikować skrypt, aby umożliwić innych argumentów
s3 cp
, takich jak--include
,--exclude
...źródło