Google Cloud Data Transfer转移到GCS子文件夹

时间:2018-05-25 12:34:01

标签: amazon-s3 google-cloud-storage google-cloud-dataflow

我正在尝试将数据从AWS S3存储桶(例如s3:// mySrcBkt)传输到GCS位置(存储桶下的文件夹为gs:// myDestBkt / myDestination)。我无法从Interface找到相同的选项,因为它只提供提供存储桶而不是子文件夹。我都没有从storagetransfer API中找到类似的设备。这是我的代码片段:

    String SOURCE_BUCKET = .... ;
    String ACCESS_KEY  = .....;
    String SECRET_ACCESS_KEY  = .....;
    String DESTINATION_BUCKET   = .......;
    String STATUS   =   "ENABLED";

    TransferJob transferJob =
            new TransferJob()
                .setName(NAME)
                .setDescription(DESCRIPTION)
                .setProjectId(PROJECT)


                .setTransferSpec(
                    new TransferSpec()

                        .setObjectConditions(new ObjectConditions()
                                .setIncludePrefixes(includePrefixes))
                        .setTransferOptions(new TransferOptions()
                                .setDeleteObjectsFromSourceAfterTransfer(false)
                                .setOverwriteObjectsAlreadyExistingInSink(false)
                                .setDeleteObjectsUniqueInSink(false))

                        .setAwsS3DataSource(
                            new AwsS3Data()
                                .setBucketName(SOURCE_BUCKET)
                                .setAwsAccessKey(
                                    new AwsAccessKey()
                                        .setAccessKeyId(ACCESS_KEY)
                                        .setSecretAccessKey(SECRET_ACCESS_KEY))

                                )
                .setGcsDataSink(
                            new GcsData()
                                .setBucketName(DESTINATION_BUCKET)
                        ))


                .setSchedule(
                    new Schedule()
                        .setScheduleStartDate(date)
                        .setScheduleEndDate(date)
                        .setStartTimeOfDay(time))
                .setStatus(STATUS);

不幸的是我找不到任何提及此转移的目标文件夹。我知道gsutil rsync有类似的规模&数据完整性是一个问题。任何人都可以指导我/指出我的任何方式/解决方法来实现目标吗?

1 个答案:

答案 0 :(得分:0)

由于存储桶而不是子目录是数据传输目标的可用选项,因此此方案的解决方法是将数据传输到存储桶,然后在存储桶和子目录之间进行rsync操作,请记住,您应该尝试像you could delete data accidentally一样运行gsutil -m rsync -r -d -n来验证其作用。