Copy Data From S3 To Local With Prefix


Answer :

aws s3 cp s3://my-bucket/ <local directory path> --recursive --exclude "*" --include "<prefix>*"


This will copy only files with given prefix



The aws s3 cp command will not accept a wildcard as part of the filename (key). Instead, you must use the --include and --exclude parameters to define filenames.



From: Use of Exclude and Include Filters




Currently, there is no support for the use of UNIX style wildcards in a command's path arguments. However, most commands have --exclude "<value>" and --include "<value>" parameters that can achieve the desired result. These parameters perform pattern matching to either exclude or include a particular file or object. The following pattern symbols are supported.




So, you would use something like:



aws s3 cp s3://my-bucket-name/ . --include "RAW_TIMESTAMP_0506*"


The above answers to not work properly... for example I have many thousands of files in a directory by date, and I wish to retrieve only the files that are needed.. so I tried the correct version per the documents:



aws s3 cp s3://mybucket/sub /my/local/ --recursive --exclude "*" --include "20170906*.png"



and it did not download the prefixed files, but began to download everything



so then I tried the sample above:



aws s3 cp s3://mybucket/sub/ . /my/local --recursive --include "20170906*"



and it also downloaded everything... It seems that this is an ongoing issue with aws cli, and they have no intention to fix it... Here are some workarounds that I found while Googling, but they are less than ideal.



https://github.com/aws/aws-cli/issues/1454



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable