shell 将指定目录txt文件备份到目标目录

将指定目录下的txt文件备份到目标目录下,如果没有目标目录,则在指定目录下进行备份

#! /bin/bash

HELP_MESSAGE() {
    echo "Usage: backupWithDate.sh [OPTIONS]"
    echo "Options:"
    echo "  -h, --help                  Show this help message and exit"
    echo "  -v, --version               Show the version of the script"
    echo "  -a PATH, --absolute PATH    Traverse the txt file in the absolute path"
    echo "  -b PATH, --backup PATH      The path of the txt file backup"
    exit 0
}


VERSION_MESSAGE() {
    echo "backupWithDate.sh version 1.0"
    exit 0
}

ABSOLUTE() {
    DATE_TIME=`date +%Y%m%d%H%M`
    for f in `find $ABSOLUTE_PATH -type f -name "*.txt"`
    do
        if [ "$HAVE_BACKUP" -eq 1 ]; then
            if [[ $f == *.txt ]]; then
                FILENAME=`basename "$f"`
                echo "backup txt file: from $f to ${BACKUP_PATH}/${FILENAME}_${DATE_TIME}"
                cp ${f} ${BACKUP_PATH}/${FILENAME}_${DATE_TIME}
            fi
        else
            echo "backup txt file: from $f to ${f}_${DATE_TIME}"
            cp ${f} ${f}_${DATE_TIME}
        fi
    done
}

CHECK() {
    if [[ "$1" != /* ]]; then
        echo "Option should be an absolute path"
        exit 1
    fi

    if [ ! -e "$1" ]; then
        echo "$1 does not exist"
        exit 1
    fi
}


if [[ $# -eq 0 || "$1" == "-h" || "$1" == "--help" ]]; then
    HELP_MESSAGE
fi


if [[ $# -eq 0 || "$1" == "-v" || "$1" == "--version" ]]; then
    VERSION_MESSAGE
fi

ABSOLUTE_PATH=""
BACKUP_PATH=""
HAVE_BACKUP=0

for ((i=1;i<=$#;i++)); do
    key="$1"

    case $key in
        -a|--absolute) 
        ABSOLUTE_PATH="$2" 
        shift
        ;;
        -b|--backup) 
        BACKUP_PATH="$2" 
        HAVE_BACKUP=1
        shift
        ;;
        *) 
        echo "Invalid option: $key"
        ;;
    esac
    shift
done

if [ -z "$ABSOLUTE_PATH" ]; then
    echo "Absolute path is not set"
    exit 1
fi

CHECK "$ABSOLUTE_PATH"

if [ -n "$BACKUP_PATH" ]; then
    CHECK "$BACKUP_PATH"
fi

ABSOLUTE
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值