- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将所有文件(例如 100.000 多个视频文件)从 Amazon S3 存储桶复制(出于备份目的)到空的 Azure Blob 容器。我们不会从 Amazon 迁移到 Azure,但我们需要备份,以防万一...
哪种方法最快?
我了解到 Azure 能够从 Amazon S3 本身下载文件,而无需传递到本地计算机。这会很棒,因为我们将节省大量带宽和时间......
我还阅读了有关该项目的信息: https://github.com/kpfaulkner/azurecopy但我目前没有安装 Windows 操作系统的计算机(如果有必要,我会考虑用它设置虚拟机)。有没有办法用MAC来做呢?或者从 bash 命令行?或者用 PHP 编写?
非常感谢
最佳答案
我有一个 Java 8 程序用于此...
该项目将使用 Java 8 在 Netbeans 8.0.1 中构建。首先,我们将创建一个新的 Maven Java 应用程序。 Maven 将用于导入 AWS 和 Azure SDK。
将您的项目命名为 AWStoAzure,并将 mycompany 替换为您的典型软件包系统。
打开 Pom.xml 和下面给出的 pom。
我的程序的关键步骤涉及更多 Amazon SDK 功能,然后是 Azure SDK。使用 Amazon SDK,我首先使用提供的公钥和私钥连接到我的 Amazon 帐户。
接下来,我检索位于给定存储桶中的所有文件的列表,并检索每个文件的元数据。
然后,我使用 Java 8 的新流功能启动多个线程,每个线程负责连接到 Azure 并启动文件传输过程。
Azure 作为 SDK 的一部分提供了服务,用于提供 http(s) URL 并将数据从该 URL 加载到 Blob 中。此 SDK 功能将大部分工作负载放在 Azure 上,并且允许我的工具在将数据加载到 blob 时不必保持与任何云服务的连接。
Amazon S3 使用类似于文件夹的命名约定,但 Blob 存储没有此功能,因此我为 S3 中的每个文件夹创建包含。
亚马逊的 SDK 能够生成嵌入了帐户用户名和密码的 URL。这使我们能够将文件公开给 Azure,但不必担心文件会向公共(public)互联网开放。
包括我使用的POM文件。
Java 源代码
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.microsoft.azure.aws;
import com.amazonaws.HttpMethod;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.OperationContext;
import com.microsoft.azure.storage.StorageException;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.InvalidKeyException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Dan
*/
public class AzuretoAWSDriver {
private static String connectionString = "";
public static void run(String accessKey, String secretKey, String bucketName) {
AmazonS3Client amazonS3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
amazonS3Client.listObjects(bucketName)
.getObjectSummaries()
.stream()
.forEach(s3ObjectSummary
-> S3toBlob(amazonS3Client, s3ObjectSummary));
}
public static void S3toBlob(AmazonS3Client amazonS3Client, S3ObjectSummary s3ObjectSummary) {
try {
String[] split = s3ObjectSummary.getKey().split("/");
GetContainer(s3ObjectSummary)
.getBlockBlobReference(split[split.length - 1])
.startCopyFromBlob(GetURL(amazonS3Client, s3ObjectSummary), null, null, null, new OperationContext());
} catch (URISyntaxException | StorageException | InvalidKeyException ex) {
Logger.getLogger(AzuretoAWSDriver.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static CloudBlobContainer GetContainer(S3ObjectSummary s3ObjectSummary) throws URISyntaxException, InvalidKeyException, StorageException {
String[] split = s3ObjectSummary.getKey().split("/");
String folders = "";
for (int i = 0; i < split.length - 2; i++) {
folders += split[i];
}
CloudBlobContainer containerReference = CloudStorageAccount
.parse(connectionString)
.createCloudBlobClient()
.getContainerReference(s3ObjectSummary.getBucketName() + folders);
containerReference.createIfNotExists();
return containerReference;
}
private static URI GetURL(AmazonS3Client amazonS3Client, S3ObjectSummary s3ObjectSummary) throws URISyntaxException {
return amazonS3Client.generatePresignedUrl(
new GeneratePresignedUrlRequest(s3ObjectSummary.getBucketName(), s3ObjectSummary.getKey())
.withMethod(HttpMethod.GET)
.withExpiration(GetExperation())).toURI();
}
private static Date GetExperation() {
return new Date((new Date().getTime()) + 60 * 60 * 1000);
}
}
Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft</groupId>
<artifactId>AWStoAzure2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>AWS SDK for Java Sample</name>
<url>http://aws.amazon.com/sdkforjava</url>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>[1.7.2,2.0.0)</version>
</dependency>
<dependency>
<groupId>com.microsoft.windowsazure.storage</groupId>
<artifactId>microsoft-windowsazure-storage-sdk</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>AwsSdkSample</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
关于azure - 将所有文件从 Amazon S3 存储桶复制到 Microsoft Azure 容器的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761302/
我想知道 Amazon CloudSearch 和 Kendra 之间的主要区别是什么?为什么同一家公司的产品有两种不同的工具相互竞争?两者看起来都一样,我不确定功能有何不同。它是如何相互区分的。 A
我在一家小型电子商务网站工作,我们希望迁移到所有 Amazon 托管服务,但我不确定 RDS 和 SimpleDB 的确切区别。 RDS可以用MySQL,SimpleDB不行吗? 最佳答案 RDS 基
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
任何人都知道如何 ELB如果我注册多个 EC2 将分发请求不同大小的实例。说一 m1.medium , 一 m1.large和一个 m1.xlarge . 如果我注册EC2会不会不一样相同大小的实例?
Amazon EventBridge 使开发人员能够将第 3 方事件驱动的应用程序与 Amazon 服务连接起来。 Amazon AppFlow 还提供与第 3 方应用程序的事件驱动集成。 对于事件驱
我想通过电子邮件或短信向特定用户(只有一个)发送验证码。我已经通过 Amazon SES 成功地做到了。但我没有尝试通过Amazon SMS然而。我发现自己陷入了调查的兔子洞AWS Pinpoint
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我想使用 Amazon Glacier 镜像 S3 存储桶。 Glacier FAQ状态: Amazon S3 now provides a new storage option that enabl
我正在尝试在 Amazon RDS 上托管数据库,而数据库将存储信息的实际内容(视频)将托管在 Amazon S3 上。我对这个过程有一些疑问,希望有人能帮助我。 Amazon RDS 上托管的数
我刚刚开始使用 AWS EC2。我知道 EC2 就像一台远程计算机,我几乎可以在其中完成我想做的所有事情。后来我知道了ECS。我知道它使用 Docker,但我对这两者之间的关系感到困惑。 ECS 只是
什么时候我会使用 SNS 和 SQS,为什么它们总是耦合在一起? 最佳答案 SNS是一个分布式发布-订阅系统。当发布者将消息发送到 SNS 时,消息就会被推送给订阅者。 SQS是分布式排队系统。消息不
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我计划在 amazon EC2 中拥有一个多服务器架构,其中服务器需要相互通信。这些服务器需要位于不同的亚马逊地区(不同的数据中心)。我可以只使用亚马逊ec2的内部网络吗?有哪些安全问题?我是否应该在
我在帐户 B 中有 S3 存储桶“跨存储桶”。现在我希望帐户 A 中存在的 EC2 访问帐户 B 中的此存储桶“跨存储桶”。 我需要使用 IAM 角色来实现此目的,因为我们不允许创建用户。 我已使用以
我有使用 Backbone.js 构建的单页应用程序。 我在 Amazon S3 上托管应用程序(应用程序仅包含静态文件)。 我使用 CloudFront 作为 Bucket CDN。 应用程序通过
我可以连接到 ElastiCache来自 EC2 实例 的 VPC 中的 Redis 实例。但我想知道是否有办法连接到 Amazon EC2 实例之外的 ElastiCache Redis 节点,例如
我有几个微实例可以正常工作数周。两者都在运行WordPress博客。在过去的24小时内,其中一个已经停止。即使重新启动,我也无法插入。另一个实例工作正常。 ssh: connect to host e
我尝试了以下方法: SELECT * FROM generate_series(2,4); generate_series ----------------- 2
如何使用PHP API将包含子文件夹和文件的文件夹复制/复制到S3存储桶中的另一个目录中? $s3->copy_object仅复制文件夹,而不复制其中的文件和子文件夹。 我是否必须使用$s3->lis
我是一名优秀的程序员,十分优秀!