#!/bin/sh -e

clean_dir() {
    rm -rf $1
}

backup_rocksdb (){
    local src_dir=$1
    local dst_dir=$2

    mkdir -p $dst_dir

    for path in $src_dir/*
    do
        filename=$(basename "$path")
        extension="${filename##*.}"
        if [ "$extension" != "sst" ]; then
            cp $path $dst_dir/$filename
        else
            ln $path $dst_dir/$filename
        fi
    done
}

backup_snapshot (){
    local src_dir=$1
    local dst_dir=$2

    mkdir -p $dst_dir

    for path in $src_dir/*
    do
        filename=$(basename "$path")
        if [ X"${filename:0:4}" == X"rev_" ]; then
            cp $path $dst_dir/$filename
        fi
    done
}

tikv_dir=$1
backup_dir=$2

echo "Clean backup dir ${backup_dir}"
clean_dir backup_dir
echo "Backup data rocksdb files ..."
backup_rocksdb $tikv_dir/db $backup_dir/db
echo "Backup raft rocksdb files ..."
backup_rocksdb $tikv_dir/raft $backup_dir/raft
echo "Backup snapshot files ..."
backup_snapshot $tikv_dir/snap $backup_dir/snap