#!/usr/bin/env bash usage() { echo "Usage: $0 [-h ] [-d (yesterday*)] [-s (cvttdata/cloud21*)>]" 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 } date="" host=homestore source=cloud21 while getopts ":h:d:s:" opt; do case ${opt} in d ) date=$OPTARG ;; h ) host=$OPTARG ;; s ) source=$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=('homestore' 'cloud21') if ! is_valid "${host}" "${valid_hosts[@]}" ; then echo "Host '${host}' is not valid" usage fi valid_sources=('cloud21' 'cvttdata') 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}" == "homestore" ]; then SourceHost=homestore.cvtt.vpn SourceUser=oleg 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}") TargetDir="/opt/jupyter_gpu/data/crypto_md" 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