将本地文件夹中的文件复制到gcs并重命名

问题描述 投票:0回答:1

我编写了以下脚本,其目的是复制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

我写的脚本将整个字典树复制到给定的目标。请知道如何解决这个问题

bash google-cloud-platform
1个回答
0
投票

它看起来问题在于以下几行,

# 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
© www.soinside.com 2019 - 2024. All rights reserved.