吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1584|回复: 0
收起左侧

[Python 转载] 自己写的一个备份数据库到ftp的程序

[复制链接]
basfan 发表于 2020-3-14 15:50
[ 本帖最后由 basfan 于 2020-3-14 17:58 编辑 ]\n\n单位系统的数据库每天都会自动备份到本地
处于安全考虑,每天需要将本地数据库异地备份(备份拷贝到U盘或者网络)
因为每次手工去执行拷贝太麻烦了,所以我自己用python自己写了一个程序,让它替我执行。服务器端用的是ServU

程序目的是读取本地目录下特定文件夹中的文件对比ftp中文件,不一样的自动上传到服务器,配合计划任务,每天半夜3点执行一遍。

第一次发帖,不知道发的是否标准,阅读起来可能有点不习惯,见谅!

该程序在最新的python3.8.0中测试成功,但存在几个问题:
1、中文乱码问题,这个问题我更换了好几种编码,想适应serv-u的编码,发现不管用啥编码,都乱码。。
   如果用我自己写的ftp服务器端倒是没有问题了,但在windows下用资源管理器查看变成了乱码。我也无语了,又因为根本用不到中文,索性没管它

2、只针对文件,因为我备份目录里面纯文件,也没有任何中文,所以是没问题的,ftp服务器是本地的,我自己开了一个账户,只用来备份到根目录,所以运行没错误。
3、最后备份成功的提示如果不去掉,做不到静默备份,我用的版本里面已经去掉了最后一行弹出对话框,可以做到静默备份到ftp



如果有人有修改版本或者更好用的,麻烦给我一份,谢谢!

我是初学python的小白,代码有不高效或者别扭的地方请见谅!
直接上代码:
[Python] 纯文本查看 复制代码
import os,ftplib,configparser


def listdiff(ftpfile,locallist):
    for each1 in ftpfile:
        for each2 in locallist:
            if each2==each1:
                locallist.remove(each2)
    return locallist

def loadconfig(cffile,section,key):
    if os.path.isfile(cffile):
        cf=configparser.ConfigParser ()
        cf.read(cffile)
        return cf.get(section,key)
    else:
        return 0

def saveconfig(file,host,port,username,password):
    cf=configparser.ConfigParser ()
    cf['ftp']={'host':host,
               'port':port,
               'username':username,
               'password':password}
    with open(file,'w') as f:
        cf.write(f)

def ftpconnect():
    ftp=ftplib.FTP()
    host=loadconfig(cfile,'ftp','host')
    port=int(loadconfig(cfile,'ftp','port'))
    username=loadconfig(cfile,'ftp','username')
    password=loadconfig(cfile,'ftp','password')
    ftp.connect(host,port)
    ftp.login(username,password)
    return ftp


def uploadfile(ftp,remotepath,localfile):
    bufsize=2048
    fp=open(localfile,'rb')
    ftp.storbinary('STOR '+ remotepath,fp,bufsize)
    ftp.set_debuglevel(0)
    fp.close()

if __name__ == '__main__':
    cfile='config.txt'
    path=r'E:\haier'
    uplist=[]
    localfile=os.listdir(path)
    ftp=ftpconnect()
    ftpfile=ftp.nlst()

    uplist=listdiff(ftpfile,localfile)

    if os.path.isfile(cfile)==0:
        host=input('请输入ip地址:')
        username=input('请输入用户名:')
        port=input('请输入端口号:')
        password=input('请输入密码:')
        
        saveconfig(cfile,host,port,username,password)
    else:
        os.chdir (path)
        for each in uplist:
            uploadfile(ftp,each,each)
        os.system('mshta vbscript:msgbox("海尔数据库自动备份成功!",64,"海尔备份程序 by basfan")(window.close)')








免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
纯之风韵 + 1 + 1 很实用,感谢分享

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 03:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表