답변:
자세한 내용은 " AWS CLI 명령 참조 "를 참조하십시오.
AWS는 최근 boto와 매우 유사하게 작동하는 명령 줄 도구를 출시했습니다.
sudo easy_install awscli
또는
sudo pip install awscli
설치 한 후에는 다음을 간단히 실행할 수 있습니다.
aws s3 sync s3://<source_bucket> <local_destination>
예를 들면 다음과 같습니다.
aws s3 sync s3://mybucket .
모든 객체를 mybucket
현재 디렉토리로 다운로드합니다 .
그리고 출력합니다 :
download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt
단방향 동기화를 사용하여 모든 파일을 다운로드합니다. 그것은 것입니다 하지 당신은 지정하지 않으면 현재 디렉토리에있는 기존 파일을 삭제 , 그것은 S3에 파일을 변경하거나 삭제하지 않습니다. --delete
S3 버킷에서 S3 버킷으로 또는 로컬에서 S3 버킷으로 동기화를 수행 할 수도 있습니다.
설명서 및 기타 예를 확인하십시오 .
위의 예는 전체 버킷을 다운로드하는 방법이지만, 수행하여 폴더를 재귀 적으로 다운로드 할 수도 있습니다
aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive
그러면 버킷 PATH/TO/FOLDER
내의 디렉토리 내에서 모든 파일과 폴더 키를 재귀 적으로 다운로드하도록 CLI에 지시합니다 BUCKETNAME
.
s3cmd
하고 Cyberduck
,하지만 나를 위해 awscli
나의 버킷에서 다운로드 ~ 70.000 파일까지 가장 빠른 방법으로했다.
s3cmd
버킷을 다운로드 하는 데 사용할 수 있습니다 .
s3cmd --configure
s3cmd sync s3://bucketnamehere/folder /destination/folder
라는 다른 도구를 사용할 수 있습니다 rclone
. 다음은 Rclone 설명서의 코드 샘플입니다.
rclone sync /home/local/directory remote:bucket
Amazon S3 데이터를 로컬 시스템에 복사하는 데 몇 가지 방법을 사용했으며 s3cmd
, 가장 쉬운 방법은 Cyberduck 입니다.
Amazon 자격 증명을 입력하고 간단한 인터페이스를 사용하여 버킷, 폴더 또는 파일을 다운로드, 업로드, 동기화하기 만하면됩니다.
이를 수행 할 수있는 많은 옵션이 있지만 가장 좋은 방법은 AWS CLI를 사용하는 것입니다.
연습은 다음과 같습니다.
머신에 AWS CLI를 다운로드하여 설치하십시오.
AWS CLI 구성 :
계정을 만들 때받은 유효한 액세스 및 비밀 키 를 입력했는지 확인하십시오 .
다음을 사용하여 S3 버킷을 동기화하십시오.
aws s3 sync s3://yourbucket /local/path
위의 명령에서 다음 필드를 바꾸십시오.
yourbucket
>> 다운로드하려는 S3 버킷./local/path
>> 모든 파일을 다운로드하려는 로컬 시스템의 경로.s3://
버킷 이름에 해당 접두사 가 있는지 확인하십시오 !!! 으로 aws s3 ls
당신이 필요하지 않은 s3://
접두사를하지만 당신은 필요한 cp
명령.
AWS S3 CLI를 사용하여 다운로드하려면 :
aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive
코드를 사용하여 다운로드하려면 AWS SDK를 사용하십시오.
GUI를 사용하여 다운로드하려면 Cyberduck을 사용하십시오.
aws s3 cp s3://my-bucket-name ./local-folder --recursive --include "*" --exclude "excludeFolder/*" --exclude "includeFolder/excludeFile.txt"
Windows의 경우 S3 브라우저 는 내가 찾은 가장 쉬운 방법입니다. 뛰어난 소프트웨어이며 비상업적 용도로는 무료입니다.
Visual Studio를 사용하는 경우 " AWS Toolkit for Visual Studio " 를 다운로드하십시오 .
설치 후 Visual Studio-AWS Explorer-S3-버킷-두 번 클릭으로 이동하십시오.
창에서 모든 파일을 선택할 수 있습니다. 마우스 오른쪽 버튼을 클릭하고 파일을 다운로드하십시오.
@Layke의 대답은 좋지만 데이터가 많고 영원히 기다리지 않으려면 " AWS CLI S3 구성 "을 읽어야 합니다.
다음 명령은 AWS CLI에 1,000 개의 스레드를 사용하여 작업 (각각 작은 파일 또는 여러 부분 복사본의 일부)을 실행하고 100,000 개의 작업을 미리 보도록 지시합니다.
aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000
이를 실행 한 후 간단한 sync
명령을 사용할 수 있습니다 .
aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path
또는
aws s3 sync s3://source-bucket/source-path c:\my\local\data\path
CPU 4 코어 및 16GB RAM이 장착 된 시스템에서 광산 (3-50GB 파일)과 같은 경우 동기화 / 복사 속도는 기본 구성에 비해 속도가 약 9.5MiB / s에서 700 + MiB / s로 70 배 증가했습니다.
S3를 약간 개발했지만 전체 버킷을 다운로드하는 간단한 방법을 찾지 못했습니다.
Java로 코딩하려면 jets3t lib를 사용하여 버킷 목록을 만들고 해당 목록을 반복하여 다운로드하십시오.
먼저 AWS 관리 영사관에서 공개 프라이빗 키 세트를 가져 와서 S3service 객체를 생성 할 수 있습니다.
AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);
그런 다음 버킷 객체 배열을 가져옵니다.
S3Object[] objects = s3Service.listObjects(YourBucketNameString);
마지막으로 해당 배열을 반복하여 객체를 한 번에 하나씩 다운로드하십시오.
S3Object obj = s3Service.getObject(bucket, fileName);
file = obj.getDataInputStream();
스레드 코드 싱글 톤에 연결 코드를 넣었습니다. 필요한 try / catch 구문은 명백한 이유로 생략되었습니다.
오히려 파이썬으로 코딩하려면 Boto를 대신 사용할 수 있습니다.
BucketExplorer를 둘러 본 후 " 전체 버킷 다운로드 "는 원하는 작업을 수행 할 수 있습니다.
https://github.com/minio/mc 로이 작업을 수행 할 수 있습니다 .
mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir
mc는 세션, 재개 가능한 다운로드, 업로드 등을 지원합니다. mc
Linux, OS X 및 Windows 운영 체제를 지원합니다. Golang으로 작성되었으며 Apache 버전 2.0에서 릴리스되었습니다.
S3Fox와 함께 Firefox를 사용하는 경우, 그 파일을 사용하여 모든 파일을 선택하고 (Shift-Select First and Last) 마우스 오른쪽 단추를 클릭 한 후 모두 다운로드 ... 문제가없는 500 개 이상의 파일로 수행했습니다.
Windows에서 선호하는 GUI 도구는 S3 용 Cloudberry Explorer, http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx 입니다. 상당히 세련된 파일 탐색기, ftp와 같은 인터페이스가 있습니다.
당신은 단지 거기 (하위 디렉토리)에 파일을하지 않은 경우 빠른 솔루션은 모든 (파일 선택하는 것입니다 click
처음에, Shift+click
마지막에) 및 히트를 Enter
하거나 right click
선택합니다 Open
. 대부분의 데이터 파일은 컴퓨터로 바로 다운로드됩니다.
다른 GUI 옵션을 추가하기 위해 WinSCP의 S3 기능을 사용 합니다 . UI에 액세스 키와 비밀 키만 있으면 연결이 매우 쉽습니다. 그런 다음 중첩 폴더의 재귀 다운로드를 포함하여 액세스 가능한 버킷에서 필요한 파일을 찾아 다운로드 할 수 있습니다.
보안을 통해 새 소프트웨어를 지우는 것이 어려울 수 있으며 WinSCP가 널리 보급되어 있으므로보다 전문화 된 유틸리티를 설치하는 대신 소프트웨어를 사용하는 것이 실제로 유리할 수 있습니다.
Windows 사용자는 설치 링크가있는이 링크에서 S3EXPLORER를 다운로드해야합니다.- http ://s3browser.com/download.aspx
그런 다음 비밀 키, 액세스 키 및 s3explorer에 대한 리전과 같은 AWS 자격 증명을 제공하십시오.이 링크에는 s3explorer : 브로 더의 복사 붙여 넣기 링크에 대한 구성 지침이 포함되어 있습니다. s3browser.com/s3browser-first-run.aspx
이제 모든 s3 버킷이 s3explorer의 왼쪽 패널에 표시됩니다.
버킷을 선택하고 왼쪽 상단에서 버킷 메뉴를 클릭 한 다음 메뉴에서 모든 파일 다운로드 옵션을 선택하십시오. 아래는 동일한 스크린 샷입니다.
그런 다음 폴더를 찾아 특정 위치에서 버킷을 다운로드하십시오.
확인을 클릭하면 다운로드가 시작됩니다.
다음은 모든 버킷을 다운로드하여 나열하고 내용을 나열하는 내용입니다.
//connection string
private static void dBConnection() {
app.setAwsCredentials(CONST.getAccessKey(), CONST.getSecretKey());
conn = new AmazonS3Client(app.getAwsCredentials());
app.setListOfBuckets(conn.listBuckets());
System.out.println(CONST.getConnectionSuccessfullMessage());
}
private static void downloadBucket() {
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
app.setBucketKey(objectSummary.getKey());
app.setBucketName(objectSummary.getBucketName());
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
//DOWNLOAD
try
{
s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
s3Client.getObject(
new GetObjectRequest(app.getBucketName(),app.getBucketKey()),
new File(app.getDownloadedBucket())
);
} catch (IOException e) {
e.printStackTrace();
}
do
{
if(app.getBackUpExist() == true){
System.out.println("Converting back up file");
app.setCurrentPacsId(objectSummary.getKey());
passIn = app.getDataBaseFile();
CONVERT= new DataConversion(passIn);
System.out.println(CONST.getFileDownloadedMessage());
}
}
while(app.getObjectExist()==true);
if(app.getObjectExist()== false)
{
app.setNoObjectFound(true);
}
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
}
/ ---------------------------- 확장 방법 ------------------- ------------------ /
//Unzip bucket after download
public static void unzipBucket() throws IOException {
unzip = new UnZipBuckets();
unzip.unZipIt(app.getDownloadedBucket());
System.out.println(CONST.getFileUnzippedMessage());
}
//list all S3 buckets
public static void listAllBuckets(){
for (Bucket bucket : app.getListOfBuckets()) {
String bucketName = bucket.getName();
System.out.println(bucketName + "\t" + StringUtils.fromDate(bucket.getCreationDate()));
}
}
//Get the contents from the auto back up bucket
public static void listAllBucketContents(){
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
System.out.println(objectSummary.getKey() + "\t" + objectSummary.getSize() + "\t" + StringUtils.fromDate(objectSummary.getLastModified()));
app.setBackUpCount(app.getBackUpCount() + 1);
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
System.out.println("There are a total of : " + app.getBackUpCount() + " buckets.");
}
}
Neel Bhaat이이 블로그 에서 설명했듯이이 목적으로 사용할 수있는 다양한 도구가 있습니다. 일부는 AWS가 제공하며 대부분은 타사 도구입니다. 이러한 모든 도구를 사용하려면 도구 자체에 AWS 계정 키와 비밀을 저장해야합니다. 저장하는 자격 증명으로 인해 전체 비용이 발생하고 사망 할 수 있으므로 타사 도구를 사용할 때는 매우주의해야합니다.
따라서 항상 이 목적으로 AWS CLI 를 사용하는 것이 좋습니다 . 이 링크 에서 간단히 설치할 수 있습니다 . 다음 명령을 실행하고 키, 비밀 값을 AWS CLI에 저장하십시오.
aws configure
다음 명령을 사용하여 AWS S3 버킷을 로컬 머신과 동기화하십시오. (로컬 머신에는 AWS CLI가 설치되어 있어야합니다)
aws s3 sync <source> <destination>
예 :
1) AWS S3에서 로컬 스토리지로
aws s3 sync <S3Uri> <LocalPath>
2) 로컬 스토리지에서 AWS S3로
aws s3 sync <LocalPath> <S3Uri>
3) AWS s3 버킷에서 다른 버킷으로
aws s3 sync <S3Uri> <S3Uri>
AWS CLI는 전체 S3 버킷을 로컬로 다운로드하는 가장 좋은 옵션입니다.
AWS CLI를 설치하십시오 .
기본 보안 자격 증명 및 기본 AWS 리전을 사용하도록 AWS CLI를 구성하십시오 .
전체 S3 버킷 사용 명령을 다운로드하려면
AWS s3 동기화 s3 : // yourbucketname 로컬 경로
다양한 AWS 서비스에 AWS cli 사용에 대한 참조 : https://docs.aws.amazon.com/cli/latest/reference/
이 AWS cli 명령을 사용하여 전체 S3 버킷 컨텐츠를 로컬 폴더로 다운로드 할 수 있습니다
aws s3 sync s3://your-bucket-name "Local Folder Path"
이런 오류가 보이면
fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
--no-verify-ssl (부울)
기본적으로 AWS CLI는 AWS 서비스와 통신 할 때 SSL을 사용합니다. 각 SSL 연결에 대해 AWS CLI는 SSL 인증서를 확인합니다. 이 옵션은 SSL 인증서 확인의 기본 동작을 무시합니다. 참고
이 태그를 --no-verify-ssl 명령과 함께 사용하십시오
aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl
s3 sync
이미 여러 번 위에 설명되어 있습니다. + --no-verify-ssl
보안 결과를 설명하지 않고 사용을 제안하는 것은 범죄입니다.
버킷이 상당히 크면 s4cmd
병렬 연결을 만들고 다운로드 시간을 향상시키는 명령이 있습니다.
데비안에서 설치하려면
apt install s4cmd
핍이있는 경우 :
pip install s4cmd
~/.s3cfg
파일이 있으면 (설치 s3cmd
및 실행 하지 않은 경우) 파일 을 읽 s3cmd --configure
거나 --access-key=ACCESS_KEY --secret-key=SECRET_KEY
명령에서 지정할 수 있습니다 .
진료소는와 유사합니다 s3cmd
. 귀하의 경우 sync
파일을 다시 다운로드하지 않고도 다운로드를 취소하고 다시 시작할 수 있으므로 a 를 권장합니다.
s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir
많은 양의 데이터 (1TB 이상)를 다운로드하는 경우 청구서에 영향을 줄 수 있으므로 먼저 계산하십시오.
이 명령을 시도하십시오 :
aws s3 sync yourBucketnameDirectory yourLocalDirectory
예를 들어 버킷 이름이 myBucket
이고 로컬 디렉토리가 인 c:\local
경우 다음을 수행하십시오.
aws s3 sync s3://myBucket c:\local
awscli에 대한 자세한 내용은 aws cli 설치를 확인하십시오.
aws s3 sync
이 최고입니다. 그러나 아무도 강력한 옵션을 지적하지 않았습니다dryrun
. 이 옵션을 사용하면를 사용할 때 s3에서 / s3으로 다운로드 / 업로드되는 내용을 볼 수 있습니다sync
. 로컬 또는 s3 버킷의 내용을 덮어 쓰고 싶지 않을 때 매우 유용합니다. 이것이 사용되는 방식입니다aws s3 sync <source> <destination> --dryrun
. 원하지 않는 변경 사항을 업로드하지 않기 위해 새 콘텐츠를 버킷에 푸시하기 전에 항상 사용했습니다.