文件备份(脚本)

5 篇文章 0 订阅
function backup_file
{
    function single_file
    {
        cp -p -u -v $FILENAME $LOCATION/`echo $FILENAME`_`date +%F_%H:%M:%S`
    }


    function remote_single_file
    {
        scp -p -r $FILENAME $USER@$HOST:$LOCATION/`echo $FILENAME`_`date +%F_%H:%M:%S`
    }


    function multiple_file
    {
        for file in $FILENAME;do
            cp -p -u -v $file $LOCATION/`echo $file`_`date +%F_%H:%M:%S`
        done
    }


    function remote_mutiple_file
    {
        for file in $FILENAME;do
            scp -p -r $file $USER@$HOST:$LOCATION/`echo $file`_`date +%F_%H:%M:%S`
        done
    }


    function local_catalog
    {
        cp -p -r -u -v $DIRECTORY $LOCATION/`basename $DIRECTORY`_`date +%F_%H:%M:%S`
    }


    function remote_catalog
    {
        scp -p -r $DIRECTORY $USER@$HOST:$LOCATION/`basename $DIRECTORY`_`date +%F_%H:%M:%S`
    }


    function host_select
    {
        COLOR="echo -en \E[1;$[RANDOM%7+31]m"
        END="\E[0m"

        $COLOR"请按1|2选择备份目的地\n"$END"\n1) 当前主机\n2) 远端主机\n"
        read -p "请输入你的选择: " number
    }
    

    function local_path
    {
        read -p "请输入备份目的地址: " LOCATION
    }

    
    function remote_path
    {
        read -p "请输入使用远程主机备份的用户: " USER
        read -p "请输入主机地址: " HOST
        read -p "请输入主机地址中备份目的地址: " LOCATION
    }


    function single_start_backup
    {
        COLOR="echo -en \E[1;$[RANDOM%7+31]m"
        END="\E[0m"
        host_select
        if [ $number -eq 1 ];then
            local_path
            single_file
        elif [ $number -eq 2 ];then
            remote_path
            remote_single_file
        else
            echo
            echo -n "***"
            $COLOR"输入错误***"$END
            echo "***"
            echo
            single_start_backup
        fi
    }    


    function multiple_start_backup
    {
        COLOR="echo -en \E[1;$[RANDOM%7+31]m"
        END="\E[0m"
        host_select
        if [ $number -eq 1 ];then
            local_path
            multiple_file
        elif [ $number -eq 2 ];then
            remote_path
            remote_mutiple_file
        else
            echo
            echo -n "***"
            $COLOR"输入错误"$END
            echo "***"
            echo
            multiple_start_backup
        fi
    }


    function catalog_start_backup
    {        
        COLOR="echo -en \E[1;$[RANDOM%7+31]m"
        END="\E[0m"
        host_select
        if [ $number -eq 1 ];then
            local_path
            local_catalog
        elif [ $number -eq 2 ];then
            remote_path
            remote_catalog    
        else
            echo
            echo -n "***"
            $COLOR"输入错误"$END
            echo "***"
            echo
            catalog_start_backup
        fi
    }


    function paper
    {
        COLOR="echo -e \E[1;$[RANDOM%7+31]m"
        END="\E[0m"
        if [ -f $FILE ];then
            FILENAME=`basename $FILE`
            PATHS=`dirname $FILE`
            cd $PATHS
            single_start_backup
            echo "备份完成, 程序退出!"
            exit
        elif [ -d $FILE ];then
            cd $FILE
            read -p "请输入文件名或文件名后缀: " DOCUMENT
            FILENAME=`ls *$DOCUMENT 2>&1`
            if [ $? -eq 0 ];then
                if [ `echo $FILENAME | tr -s ' ' '\n' | wc -l` -eq 1 ];then
                    single_start_backup
                    echo "备份完成, 程序退出!"
                    exit
                elif [ `echo $FILENAME | tr -s ' ' '\n' | wc -l` -gt 1 ];then
                    multiple_start_backup
                    echo "备份完成, 程序退出!"
                    exit
                fi
            else
                $COLOR"错误, 请确认该类型文件是否存在!"$END
                exit
            fi
        else
            $COLOR"错误, 请确认该类型文件或目录是否存在!"$END
            exit
        fi
    }
    

    function catalog
    {
        COLOR="echo -e \E[1;$[RANDOM%7+31]m"
        END="\E[0m"
        if [ -d $DIRECTORY ];then
            catalog_start_backup
            echo "备份完成, 程序退出!"
            exit
        else
            $COLOR"错误, 请确认该目录是否存在!"$END
            exit
        fi
    }



    echo "=====请按数字1|2选择内容====="
    PS3="请输入您的选择: "
    select MENU in 文件 目录;do
    case $REPLY in
    1)
        read -p "请输入文件名或目录: " FILE
        paper
        ;;
    2)
        read -p "请输入目录路径: " DIRECTORY
        catalog
        ;;
    esac
    done
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值