Перенос данных Google Cloud в подпапку GCS - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь передать данные из корзины AWS S3 (например, s3: // mySrcBkt) в местоположение GCS (папка под корзиной как gs: // myDestBkt / myDestination).Я не смог найти ту же опцию в интерфейсе, так как в ней есть только положение для предоставления корзины, а не подпапки.Также я не нашел аналогичного представления в 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 голосов
/ 15 августа 2018

Поскольку корзина, а не подкаталог, является доступной опцией для пункта назначения передачи данных, обходным решением для этого сценария будет передача данных в вашу корзину, а затем операция rsync между вашей корзиной и подкаталогом, просто имейте в виду, чтоВы должны попробовать запустить gsutil -m rsync -r -d -n, чтобы проверить, что он будет делать, так как вы можете случайно удалить данные .

...