копировать файлы в локальную папку в gcs с переименованием - PullRequest
0 голосов
/ 15 апреля 2019

Я написал следующий скрипт, целью которого является копирование файлов по заданному пути в указанную папку в gcs:

 #!/usr/bin/env bash

set -e
set -u

SOURCE=$1
CI_PROJECT_DIR="/home/user/project-ingestion"
DICT_PATH="${CI_PROJECT_DIR}/src/main/resources/dictionaries/$SOURCE"
DICT_BUCKETS="dict-bucket"

dictionaries="dictionaries"
DATE=`date '+%Y_%m_%d'`
for dictionary in $DICT_PATH/*.json; do
    FOLDER=${dictionary//+(*\/|.*)}
    TARGET="gs://$DICT_BUCKETS/$dictionaries/$SOURCE/$FOLDER/$FOLDER'_'$DATE.json"
    gsutil cp $dictionary  $TARGET
done

так что если у меня есть мои json файлы в,

/home/user/project-ingestion/src/main/resources/dictionaries/source/factories.json

Я хочу скопировать его,

gs://dict-bucket/factories/factories_2019_05_04.json

скрипт, который я написал, копирует все дерево словарей в заданную цель. Любая идея, как это исправить, пожалуйста

1 Ответ

0 голосов
/ 15 апреля 2019

Похоже, проблема заключается в следующих строках:

# parent path of $dictionary is not truncated
FOLDER=${dictionary//+(*\/|.*)}

# TARGET will contain single quotes
TARGET="gs://$DICT_BUCKETS/$dictionaries/$SOURCE/$FOLDER/$FOLDER'_'$DATE.json"

Я не уверен, как именно вы собираетесь построить целевой путь, но может помочь следующее (внутри для блока цикла).

filename=$(basename $dictionary)    # e.g. factories.json
file_prefix=${filename%%.*}         # e.g. factories (remove everything after first period)
TARGET="gs://fixed_path/${file_prefix}/${file_prefix}_${DATE}.json" # change this as per your need
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...