#!/usr/bin/env bash usage() { echo -n "Usage: $0 [-h ]" echo -n " [-d (yesterday*)]" echo -n " [-s (cloud28/cloud21*)>]" echo " [-t (/opt/jupyter_gpu/data/crypto_md)]" exit 1 } is_valid() { local inst=$1 shift local valid_instances=("$@") for valid_inst in "${valid_instances[@]}"; do if [[ "$inst" == "$valid_inst" ]]; then return 0 fi done return 1 } # ------- D E F A U L T S date="" host=hs01 source=cloud21 TargetDir="/opt/jupyter_gpu/data/crypto_md" # ------- D E F A U L T S while getopts ":h:d:s:t:" opt; do case ${opt} in d ) date=$OPTARG ;; h ) host=$OPTARG ;; s ) source=$OPTARG ;; t ) TargetDir=$OPTARG ;; \? ) echo "Invalid option: -$OPTARG" >&2 usage ;; : ) echo "Option -$OPTARG requires an argument." >&2 usage ;; esac done if [ "${date}" == "" ] ; then date="yesterday" fi echo "$date $host $source" valid_hosts=('hs01' 'cloud21') if ! is_valid "${host}" "${valid_hosts[@]}" ; then echo "Host '${host}' is not valid" usage fi valid_sources=('cloud21' 'cloud28') if ! is_valid ${source} ${valid_sources[@]} ; then echo "Source '${source}' is not valid" usage fi if [ "${host}" == "cloud21" ] ; then SourceHost=cloud21.cvtt.vpn SourceUser=cvtt SourceRootDir="/opt/store/cvtt/md_archive/crypto/${source}" elif [ "${host}" == "hs01" ]; then SourceHost=hs01.cvtt.vpn SourceUser=cvtt SourceRootDir=/works/cvtt/md_archive/crypto/${source} else usage fi echo "${SourceHost} ${SourceUser} ${SourceRootDir}" SourceFile=$(date -d ${date} "+%Y%m%d.mktdata.db") SourceFileZip="${SourceFile}.gz" SourceFilePath=$(date -d ${date} "+${SourceRootDir}/%Y/%m/${SourceFileZip}") TargetFile=$(date -d ${date} "+%Y%m%d.mktdata.ohlcv.db") TargetFilePath="${TargetDir}/${TargetFile}" # Tables=(bnbfut_ohlcv_1min bnbspot_ohlcv_1min coinbase_ohlcv_1min) Tables=(bnbspot_ohlcv_1min coinbase_ohlcv_1min) echo ${SourceFile} tmp_dir=$(mktemp -d) function cleanup { cd ${HOME} rm -rf ${tmp_dir} } trap cleanup EXIT function download_file { Cmd="rsync" Cmd="${Cmd} -ahv" if tty -s; then Cmd="${Cmd} --progress=info2" fi Cmd="${Cmd} ${SourceUser}@${SourceHost}:${SourceFilePath} ${tmp_dir}/" echo ${Cmd} eval ${Cmd} ls -lh ${tmp_dir} Cmd="gunzip ${tmp_dir}/${SourceFileZip}" echo ${Cmd} && eval ${Cmd} ls -lh ${tmp_dir} rm -f ${TargetFilePath} touch ${TargetFilePath} for table in "${Tables[@]}" do Cmd="sqlite3 ${tmp_dir}/${SourceFile} \".dump ${table}\" | sqlite3 ${TargetFilePath}" echo ${Cmd} eval ${Cmd} done chmod 600 ${TargetFilePath} ls -lh ${TargetFilePath} } download_file