python同步oracle_python定时备份oracle数据库上传到ftp

该博客介绍了一种使用Python脚本定时备份Oracle数据库并上传到FTP服务器的方法。通过循环遍历指定的Oracle用户,执行expdp命令生成dmp文件,随后将dmp文件压缩成tar.gz,最后通过FTP将压缩文件上传到指定的FTP目录。同时,脚本还会清理旧的备份文件以节省FTP存储空间。
摘要由CSDN通过智能技术生成

利用python定时备份数据库并上传到ftp,代码:

import os;

import time;

import tarfile;

import shutil;

import ftplib;

import datetime

dumpdir = 'D:/oraclebak/';#oracle dmp的存储路径

tardir = 'D:/dumptar/'

dbList = ('user1','user2','user3');#oralce用户

ftpdir = '/ftp/dump/';#ftp存储路径

##循环执行oracle备份命令

for dbname in dbList:

command = "expdp userid='sys/syshaha@localhost/orcl as sysdba' \

directory=DUMP_DIR dumpfile=%s.dmp,logfile=%s.log schemas=%s" %(dbname,dbname,dbname);

os.system(command);

tar_file = time.strftime('%Y-%m-%d_%H-%M-%S')+'.tar.gz';#创建tar文件

tar = tarfile.open(tardir+tar_file,'w:gz');

##循环将dmp文件压缩到tar文件,然后删除dmp文件

for root,dir,files in os.walk(dumpdir):

for file in files:

fullpath = os.path.join(root,file);

tar.add(fullpath,arcname=file);

if os.path.isfile(fullpath):

os.remove(fullpath);

elif os.path.isdir(fullpath):

shutil.rmtree(fullpath,True);

tar.close();

## 上传到ftp

ftp = ftplib.FTP();

ftp.connect('192.168.10.6','21');

ftp.login('dump','dumphaha');

#根据月份创建目录

monthdir = time.strftime('%Y%m');

try:

ftp.cwd(ftpdir+monthdir);

except ftplib.error_perm:

ftp.mkd(ftpdir+monthdir);

ftp.cwd(ftpdir+monthdir);

f = open(tardir+tar_file,'rb');

#print tar_file

ftp.storbinary('STOR '+tar_file,f);

f.close();

##删除上一月份的备份文件,以减少ftp存储空间

lastmonthdir = '';

lastmonth = datetime.date.today().month-1

if lastmonth<10:

lastmonthdir = str(datetime.date.today().year)+'0'+str(lastmonth);

elif lastmonth == 0:

lastmonthdir = str(datetime.date.today().year-1)+ '12';

else:

lastmonthdir = str(datetime.date.today().year)+ str(lastmonth);

#print lastmonthdir;

try:

ftp.cwd(ftpdir+ lastmonthdir);

for lastfile in ftp.nlst():

try:

#print lashfile

ftp.delete(lastfile);

except Exception,e:

ftp.rmd(ftpdir+lastmonthdir);

print e;

#ftp.rmd(lastfile);

ftp.rmd(ftpdir+ lastmonthdir);

except ftplib.error_perm,e:

print e;

ftp.quit();

os.remove(tardir+tar_file);

window下定制执行python

将以上代码保存为.py文件,然后设置window任务计划程序

d6539e02b3e50089aa8b3e035824cbac.png

设置执行程序

8c9c9620cbb954d3648beebc5377fcf5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值