ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

bash:script:24_backup_shell

文書の過去の版を表示しています。


24 バックアップシェル

Cronでバックアップ用シェルのメモ

#!/bin/bash

BACKUP_DIR=/home/backups
BACKUP_LIST=/home/backups/conf
TAR_OP="--sparse --one-file-system -zcp --numeric-owner --xattrs ."
usage_exit() {
        echo "Usage: $0 [-H host] [-p period type] [-l list_file] " 1>&2
        exit 1
}

while getopts p:H:l:h: OPT
do
    case $OPT in
        H)  BAKHOST=$OPTARG
        ;;
        p)  PERIOD=$OPTARG
            ;;
        l)  LIST=$OPTARG
            ;;
        u)  USER=$OPTARG
            ;;
        h)  usage_exit
            ;;
        \?) usage_exit
            ;;
    esac
done

shift $(($OPTIND - 1))

#echo $OPTIND
#echo $BAKHOST
#echo $PERIOD
#echo $LIST
if [ -z $LIST ];then
    LIST=${BAKHOST#*@}
fi

#exit;
function dir_check(){
    dir=$1
    if [ ! -d $dir ];then
        mkdir -p $dir
    fi
}
function period_check(){
    if [ $1 == 'day' ];then
        PDIR=$(date +%a)
    elif [ $1 == 'month' ];then
        PDIR=$(date +%m)
    else
        echo "Error period type."
        exit;
    fi
}
function list_check(){
    if [ ! -d $BACKUP_LIST ];then
        dir_check $BACKUP_LIST
    fi

    BKLIST=$BACKUP_LIST/$LIST
    if [ ! -f $BKLIST ];then
        echo "Error list not found: $BKLIST"
        exit;
    fi
}
function rsync_dir(){
    list_check
    echo "backup_list: $BKLIST"
    echo "============="
    period_check $PERIOD
    BK_DIR=$BACKUP_DIR/$BAKHOST/$PERIOD/$PDIR

    #list=$(<$BKLIST)
    #for LINE in $list
    for LINE in `cat $BKLIST`
    do
        echo "backup: $LINE"
        DIR=${LINE%:*}
        FILE_NAME=${LINE#*:}
        #echo "rsync -av $BAKHOST:$DIR $BK_DIR/$DIR $FILE_NAME"
        dir_check $BK_DIR

        if [ "${DIR: -1}" == '/' ];then
            ##ssh $BAKHOST "tar -C $DIR $TAR_OP"|  cat > $BK_DIR/$FILE_NAME.tar.gz
            echo "rsync -a $BAKHOST:$DIR $BK_DIR/$FILE_NAME/"
            rsync -a $BAKHOST:$DIR $BK_DIR/$FILE_NAME/
        else
            #D=$(dirname $DIR)
            #dir_check $BK_DIR$D
            echo "rsync -a $BAKHOST:$DIR $BK_DIR/$FILE_NAME"
            rsync -a $BAKHOST:$DIR $BK_DIR/$FILE_NAME
        fi
    done
}


rsync_dir
exit;
bash/script/24_backup_shell.1642764415.txt.gz · 最終更新: 2022/01/21 20:26 by matsui