首页 > 代码库 > shell自动上传多份备份文件到FTP服务器

shell自动上传多份备份文件到FTP服务器

#!/bin/sh

#数据库备份文件所在路径
db_dir=/backup/oracle/rman/dbf
archive_dir=/backup/oracle/rman/archivelog
#临时目录,用于上传所找出的文件
db_tmp_dir=/backup/oracle/rman/dbftmp
archive_tmp_dir=/backup/oracle/rman/archivelogtmp
#找出最新的数据库备份文件
df_put_files=`find  /backup/oracle/rman/dbf/* -mtime 0`
archive_put_files=`find  /backup/oracle/rman/archivelog/* -mtime 0`
#找出旧的数据库备份文件
old_files=`find  /backup/oracle/rman/dbf/* -mtime +1`
old_archive_files=`find  /backup/oracle/rman/archivelog/* -mtime +1`
#上传文件的日志文件
ftp_db_log=/backup/oracle/rman/ftp_log

#ftp info#
HOST="90.48.0.22"
USER="text"
PASSWD="udb_2014"

#defined ftp
ftp_dbbk()
{
echo "
open $HOST
user $USER $PASSWD
binary
lcd $put_tmp_dir/
prompt
mput ./*
close
bye
"|ftp -nv |tee /backup/oracle/rman/ftp_err_log >/dev/null
}

case "$1" in
db.rcv)
    put_tmp_dir=$db_tmp_dir
    #创建用于上传的临时目录
    mkdir -p $put_tmp_dir
    #把找出的最新文件移动到临时目录
    for i in $df_put_files
    do
        mv $i $put_tmp_dir/
    done
    ftp_dbbk
    err_msg=`grep "226 File receive OK" /backup/oracle/rman/ftp_err_log |wc -l`
    if [ $err_msg -ne 0 ];then                            #判断是否上传成功
        echo "$(date +%Y-%m-%d" "%H:%M:%S):Ftp mput db_files successed!" >>/backup/oracle/rman/ftp_log
        echo "------------------------------------------------------" >>/backup/oracle/rman/ftp_log
        mv $put_tmp_dir/* $db_dir/                 #把上传完成后的文件从临时目录移回数据库备份目录下
        exit 0
    else
        echo "$(date +%Y-%m-%d" "%H:%M:%S):Ftp mput db_files failed!" >>/backup/oracle/rman/ftp_log
        echo "-------------------failed----------------------------" >>/backup/oracle/rman/ftp_log
        cat /backup/oracle/rman/ftp_err_log >>/backup/oracle/rman/ftp_log
        echo "-------------------failed----------------------------" >>/backup/oracle/rman/ftp_log
        exit 2
    fi
    ;;
archive.rcv)
    put_tmp_dir=$archive_tmp_dir
    #创建用于上传的临时目录
    mkdir -p $put_tmp_dir
    #把找出的最新文件移动到临时目录
    for i in $archive_put_files
    do
        mv $i $put_tmp_dir/
    done
    ftp_dbbk
    err_msg=`grep "226 File receive OK" /backup/oracle/rman/ftp_err_log |wc -l`
    if [ $err_msg -ne 0 ];then                            #判断是否上传成功
        echo "$(date +%Y-%m-%d" "%H:%M:%S):Ftp mput archive_files successed!" >>/backup/oracle/rman/ftp_log
        echo "------------------------------------------------------" >>/backup/oracle/rman/ftp_log
        mv $put_tmp_dir/* $archive_dir/                 #把上传完成后的文件从临时目录移回数据库备份目录下
        exit 0
    else
        echo "$(date +%Y-%m-%d" "%H:%M:%S):Ftp mput archive_files failed!" >>/backup/oracle/rman/ftp_log
        echo "-------------------failed----------------------------" >>/backup/oracle/rman/ftp_log
        cat /backup/oracle/rman/ftp_err_log >>/backup/oracle/rman/ftp_log
        echo "-------------------failed----------------------------" >>/backup/oracle/rman/ftp_log
        exit 2
    fi
    ;;
*)
    echo "usage: $0 (db.rcv|archive.rcv)"
esac

本文出自 “中庸之道” 博客,请务必保留此出处http://lynn1105.blog.51cto.com/2924741/1586735

shell自动上传多份备份文件到FTP服务器