Aws s3, cp veya sync'den klasörler mi indiriyorsunuz?


122

S3'teki bir dizinin tüm içeriğini yerel bilgisayarıma indirmek istersem, hangi komutu cp veya sync kullanmalıyım?

Herhangi bir yardım çok takdir edilecektir.

Örneğin,

"bu klasör" ün tüm içeriğini masaüstüme indirmek istersem, böyle mi görünür?

 aws s3 sync s3://"myBucket"/"this folder" C:\\Users\Desktop

Yanıtlar:


214

Kullanılması aws s3 cpgelen AWS Komut Satırı Arayüzü (CLI) gerektirecektir --recursivebirden fazla dosya kopyalamak için parametre.

aws s3 cp s3://myBucket/dir localdir --recursive

aws s3 syncKomut, varsayılan olarak, bir bütün dizin kopyalar. Yalnızca yeni / değiştirilmiş dosyaları kopyalar.

aws s3 sync s3://mybucket/dir localdir

İstediğiniz sonucu elde etmek için sadece deney yapın.

Dokümantasyon:


3
Nereden kaçacağımı bulmam birkaç dakikamı aldı. İşte: aws.amazon.com/cli
Bjørn Stenfeldt

@dnafication Lütfen eski bir soruya yorumda soru sormak yerine yeni bir soru oluşturun.
John Rotenstein

1
aws s3 cp s3://myBucket/dir localdir --recursive. Bu bir cazibe gibi çalışıyor. --Recursive bayrağı atlanırsa, pek yardımcı olmayan bir hata atar:fatal error: An error occurred (404) when calling the HeadObject operation: Key "myBucket" does not exist
Siddhartha

Ancak dosya GB cinsinden tek zip büyük boyutluysa, tavsiye ne olurdu?
Kanagavelu Sugumar

1
@KanagaveluSugumar Lütfen eski bir soruya yorum yapmak yerine yeni bir Soru oluşturun.
John Rotenstein

4

Başka bir profil, özellikle çapraz hesap kullanmanız gerektiğinde. profili yapılandırma dosyasına eklemeniz gerekir

[profile profileName]
region = us-east-1
role_arn = arn:aws:iam::XXX:role/XXXX
source_profile = default

ve sonra yalnızca tek bir dosyaya erişiyorsanız

aws s3 cp s3://crossAccountBucket/dir localdir --profile profileName


2

Tek bir dosya indirmek istemeniz durumunda aşağıdaki komutu deneyebilirsiniz:

aws s3 cp s3://bucket/filename /path/to/dest/folder

1

AWS CLI'nin 2. sürümünü kullandım. S3 seçeneği için, şimdi size ne olacağını göstermek için bir de --dryrun seçeneği var:

aws s3 --dryrun cp s3://bucket/filename /path/to/dest/folder --recursive


0

sync yöntem önce hem kaynak hem de hedef yolları listeler ve yalnızca farklılıkları (ad, boyut vb.) kopyalar.

cp --recursive yöntem kaynak yolunu listeler ve tümünü hedef yola kopyalar (üzerine yazar).

Hedef yolda olası eşleşmeleriniz varsa, hedef yoldaki syncbir LIST isteği size birçok gereksiz PUT isteğini kurtaracağından, yani daha ucuz ve muhtemelen daha hızlı olmasını öneririm .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.