空き容量を調べてからバックアップする

スクリプト名 : backup2.sh
書式 : backup2.sh バックアップ元ディレクトリ バックアップ先ディレクトリ 識別名 [必要空き容量]
目的 : 空き容量を調べてからバックアップをする
戻り値 : 成功:0 失敗:1 エラー:9

#!/bin/sh
. Error_Msg.sh && . Arg_Nums.sh && . Chk_File.sh || exit 9
Arg_Nums -ge 3 "$@" && Arg_Nums -le 4 "$@" || exit 9

_DEST_DIR=$2
_FILE_NAME=$3-$(date +%Y%m%d).tar.gz
_LIMIT=$4

#相対パスの場合は絶対パスに変換する
_PATH_TYPE=$(echo "$_DEST_DIR" | cut -c1)
[ $_PATH_TYPE != / ] && _DEST_DIR="$PWD/$_DEST_DIR"

[ "$_LIMIT" = "" ] && _LIMIT="100"
_LIMIT=$(( $_LIMIT * 1024 ))
#dfの結果の1行目を削除して4番目のフィールドのみ取り出す(空き容量)
_FREE_SPACE=$(df "$_DEST_DIR" | sed 1d | awk '{print $4}')
[ "$_FREE_SPACE" -gt "$_LIMIT" ] || \
    { Error_Msg "$0" "No enough disk space avaliable." exit 1; }

cd "$(dirname "$1")"
tar czpf "$_DEST_DIR/$_FILE_NAME" "$(basename "$1")"
[ $? = 0 ] || exit 1