Shell Script

BACKUP_DIR=
LOG_DIR=
USER=
BACKUP_SERVER_IP=
BACKUP_SERVER_DIR=
LOG_KEEP_DAYS=

function print_msg
{
  echo ====================
  echo "$1" 1>&2
  echo ====================
}

function check_backup_dir
{
  if [ ! -d $BACKUP_DIR ]
  then
        mkdir -p $BACKUP_DIR
        if [ $? -gt 0 ]
        then
                print_msg "둜컬 λ°±μ—… 디렉토리 생성 μ‹€νŒ¨"
                exit 1
        fi
  fi

  cd $LOG_DIR

  for dir in $(find . -mindepth 1 -type d); do
    if [ !  -d $BACKUP_DIR/$(basename "$dir") ]; then
      print_msg "λ°±μ—… νŒŒμΌν΄λ”μƒμ„±: $BACKUP_DIR/$(basename "$dir")"
      mkdir -p $BACKUP_DIR/$(basename "$dir")
          if [ $? -gt 0 ]
          then
                print_msg "λ°±μ—… 디렉토리 생성 μ‹€νŒ¨"
                exit 1
          fi
    fi
  done

}

function backup_log
{
  cd $LOG_DIR
  for f in $(find . -type f -name "*.log*" -mtime +$LOG_KEEP_DAYS)
  do
        print_msg "$f"
        FILE=${f#*/}
        mv -f $FILE $BACKUP_DIR/$FILE
        if [ $? -gt 0 ]
        then
                print_msg "파일 이동 μ‹€νŒ¨"
                exit 1
        fi
  done

  print_msg "파일 이동 μ™„λ£Œ"
}

function compress_file
{
  cd $BACKUP_DIR
  print_msg "파일 μ••μΆ• μ‹œμž‘"
  for f in $(find . -type f -name '*.log*')
  do
    gzip $f
    if [ $? -gt 0 ];then
      print_msg "파일 μ••μΆ• μ‹€νŒ¨"
      exit 1
    fi
  done

  print_msg "파일 μ••μΆ• μ™„λ£Œ"
}

function transfer_file
{
  if [ $(ssh -q -o passwordauthentication=no $USER@$BACKUP_SERVER_IP echo OK) != "OK" ]
  then
        print_msg "λ‘œκ·Έμ„œλ²„ 접속 μ‹€νŒ¨"
  fi

  ssh $USER@$BACKUP_SERVER_IP mkdir -p $BACKUP_SERVER_DIR

  if [ $? -gt 0 ]
  then
        print_msg "λ‘œκ·Έμ„œλ²„ λ°±μ—… 디렉토리 였λ₯˜"
  fi

  print_msg "파일 전솑 μ‹œμž‘"

  cd $BACKUP_DIR

  scp -r * $USER@$BACKUP_SERVER_IP:$BACKUP_SERVER_DIR

  if [ $? -eq 0 ];then
    print_msg "파일 전솑 μ™„λ£Œ"
  else
    print_msg "파일 전솑 μ‹€νŒ¨"
    exit 1
  fi
}

function delete_file
{
  print_msg "파일 μ‚­μ œ μ‹œμž‘"

  find $BACKUP_DIR -type f -name '*.gz' -exec rm '{}' \;

  if [ $? -eq 0 ];then
    print_msg "파일 μ‚­μ œ μ™„λ£Œ"
  else
    print_msg "파일 μ‚­μ œ μ‹€νŒ¨"
  fi

}

check_backup_dir
backup_log
compress_file
transfer_file
delete_file

Last updated