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

时间: 2024-10-13 20:05:05

shell自动上传多份备份文件到FTP服务器的相关文章

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是指备份执行时当天的日期),最后只保留最近7天的备份 2.上传/home/osyunweibak里面的备份文件到远程FTP服务器上,并且只保留最近7天的备份. 3.FTP服务器:192.168.21.139 端口:21 账号:osyunwei 密码:123456 osyunweibak为备份文件存放目

用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器

这篇文章主要介绍了用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器的方法,需要的朋友可以参考下. http://www.jb51.net/article/50359.htm 1.利用winrar建立压缩包 首先将要备份的文件路径收集到一个文本文件里 如我的rat.txt里内容如下: "C:\Documents and Settings\EvanZhang\Desktop\untitled.JPG""C:\Documents and Settings\E

Nginx日志切割并计划任务自动上传到FTP服务器

枫城浪子原创,转载请标明出处! 微信bh19890922 QQ445718526,490425557 更多技术博文请见个人博客: https://fengchenglangzi.000webhostapp.com http://fengchenglangzi.blog.51cto.com 一.简述 Nginx WEB服务器每天会产生大量的访问日志,而且不会自动地进行切割,如果持续天数访问,将会导致该access.log日志文件容量非常大,不便于SA查看相关的网站异常日志,并且后期进行分割非常不易

Linux服务器建站数据备份自动上传FTP服务器

现在很多朋友通过购买云服务器建站,有时候由于服务器系统的问题,没有及时做好网站数据的备份而导致数据的丢失.如果你手中还有其他云服务器或者FTP服务器可以实现自动备份上传的功能.本文仅仅是做一个备份数据想法. (1)网站数据备份 将网站数据/var/www/vhost/www.51cto.com和/var/www/vhost/www.baidu.com分别备份到: /Data/code-backup/www.51cto.com和/Data/code-backup/www.baidu.com下. [

POI导出时写一份到ftp服务器,一份下载给客户端

导语: 昨天接到项目经理这么一个需求,让我在POI导出Excel的时候写一份到我之前搭建的ftp服务器上.所以就有了这篇博客首先我们来分析下之前的业务逻辑:我们创建并构造了一个workbook,然后构建了一个OutputStream输出流,然后我们把数据写入输出流中就可以被客户端下载. 现在我们要在此基础上写一份到ftp服务器 那么我们就需要两个流,首先一个输入流把文件写到ftp服务器,然后需要一个输出流把文件输出到客户端.千万不要用workbook.write(out)一份到客户端,然后又wo

centos 7自动备份文件到远端FTP服务器

背景 业务系统运行于数据中心的服务器上,服务器安装centos 7系统,oracle数据库,数据库每日23点1分自动进行备份(备份以年月日命名,例如:20191218.dmp和20191218.log).按业务连续性管理(BCM)要求,需要将自动备份的数据进行异地保存. 1.已在另一篇博文中部署了FTP服务器. 2.在数据中心服务器上部署自动ftp上传任务. 2.1.centos 7默认不能执行ftp命令,需要安装ftp客户端 #yum install ftp 安装FTP客户端 2.2.使用or

expect自动上传目录到FTP服务器

客户需求:在/home/installer目录下会每天生成一个目录(日期格式),需要每天定时把这些目录上传到云服务器指定目录下(FTP) 思路:crontab添加任务计划,需要自动登录ftp服务器,所以需要expect来自动输入账号密码, 解决方案: 1:下载所需要的工具包:expect,lftp(直接yum下载即可,此步忽略) 2:编辑expect脚本,vim /home/install/back.expect #!/usr/bin/expect set FTP_IP 192.168.1.10

ubuntu crontab 定时备份postgres数据库并上传ftp服务器

最近公司要求备份数据库,所以就查了比较作的资料.废话不多说,入正题. 目的:定期备份ubuntu下的postgres数据库,打包上传到指定ftp服务器. 经过查找资料,解决方法: ①编写备份数据库.打包压缩.上传指定ftp的脚本. ②将该脚本加入到ubuntu定期计划任务crontab中. 下边是执行的步骤: ①编写shelll脚本:bk.sh,对于对shell脚本不了解的,可以百度w3cshool shell. 最好用root用户编写:su root. 编写完后,添加执行权限,新编写的shel

Ubuntu 配置vsftpd实现FTP服务器

0.vsftpd是啥玩意 都不知道安装了个啥东西,那就没意思了,所以先去了解下什么是vsftpd.vsftpd意思为"very secure FTP daemon(非常安全的FTP进程)",当然只有更安全没有最安全. 那它到底安全在哪里呢,主要体现在以下两点: 权限控制,vsftpd以一般用户登录,用户权限相对较小,对于系统就越安全,对于用户需要的系统级指令大部分被整合到vsftpd中了,用户不需要申请更高权限就足以完成绝大部分ftp指令:此外对于ftp本身内部的读写控制,vsftpd