【准备工作】
- <李>
搭建FTP服务器:Windows Server 2008 R2搭建FTP服务
李> <李>如果本机访问报530错误:1,检查用户名:密码;2、检查FTP目录的用户权限。
李> <李>如果远程主机无法访问,检查防火墙。
李> <李>关于FTP的端口:控制端口为21;数据端口在主动模式(港口)下为20,被动模式(PASV)下不定。
李> <李>开启被动模式:在“FTP防火墙支持”里面配置端口,然后重启“微软FTP服务”服务。注意具体FTP站点的数据框是灰色的,需要在IIS总站点配置。
李>
【编码】
以下代码对Windows下,MariaDB 10.1.18, Ubuntu下,,MySQL 5.7.23测试可行。
#,编码:utf - 8 #,作者:沃克 #,日期:2018 - 08 - 02, 摘要:#还以为,Python3 备份,MySQL/MariaDB(本地+ FTP),一个库一个文件 import 操作系统 import 时间 import pymysql import pprint import psutil 得到ftplib import  FTP 时间=DBHost " # 39; 127.0.0.1 # 39; DBPort =3306 时间=DBUser " # 39;根# 39;,,,,, 时间=DBPwd " # 39;密码# 39;=#,LocalBakRoot " # 39;/home/沃克/sql_bak& # 39;,,,, #,本地备份目录 时间=LocalBakRoot " # 39; D: \ sql_bak& # 39;,,,, #,本地备份目录 时间=LocalIP & # 39; & # 39; 时间=FtpHost " # 39; 192.168.xx.xx& # 39;,, #, FTP 主机 时间=FtpBakRoot " # 39; sql_bak& # 39;,,,,, #, FTP 目录 时间=FtpUser " # 39; ftpadmin& # 39;,,,,,,,, 时间=FtpPwd " # 39;密码# 39;, #,忽略掉系统库 IgnoreDB =, {& # 39; information_schema& # 39;,, & # 39; mysql # 39;,, & # 39; performance_schema& # 39;,, & # 39; sys # 39;},,,, #,根据前缀获取IP def GetLocalIPByPrefix(前缀): ,,,localIP =, & # 39; & # 39; ,,,dic =, psutil.net_if_addrs () ,,,for adapter 拷贝dic: ,,,,,,,snicList =,迪拜国际资本(适配器) ,,,,,,,for snic 拷贝snicList: ,,,,,,,,,,,if not snic.family.name.startswith (& # 39; AF_INET& # 39;): ,,,,,,,,,,,,,,,继续 ,,,,,,,,,,,ip =snic.address ,,,,,,,,,,,if ip.startswith(前缀): ,,,,,,,,,,,,,,,localIP =, ip ,,,,, ,,,return localIP ,, #,处理一个数据库 def ProcOneDB (dbName): ,,,print (& # 39; ProcOneDB % s ……& # 39;, %, dbName) ,,,filename =, & # 39; % s_ % s_ % s.sql& # 39;, %, (time.strftime (& # 39; Y % m % d % # 39;,, time.localtime ()),, LocalIP,, dbName) ,,,localFile =, os.path.join (LocalBakRoot,文件名) ,,,#备份数据库,如果没有,-B 参数不会导出数据库创建语句 ,,,cmd =, & # 39; mysqldump - u % s - p % s -B % s 祝辞,% & # 39;,%,(dbus, DBPwd,, dbName,, localFile) ,,,#,打印(& # 39;cmd:, % & # 39;, %, cmd) ,,,print (& # 39; mysqldump ……& # 39;) ,,,rtn =, os.system (cmd) ,,,if 0, !=,研制: ,,,,,,,印刷(& # 39;错误:0,!=,研制# 39;) ,,,,,,,return 错误的 ,,,ftp =, FTP () ,,,ftp.encoding =, & # 39; gb18030 # 39; ,,,ftp.set_pasv(假) ,,,ftp.connect (FtpHost,端口=21日,超时=10) ,,,ftp.login(用户=FtpUser, passwd=FtpPwd) ,,,print (ftp.getwelcome ()) ,,,ftp.cwd (FtpBakRoot) ,,,#,以,sql 服务器,ip 作为子目录名 ,,,if LocalIP not 拷贝ftp.nlst (): ,,,,,,,ftp.mkd (LocalIP),,,,,,, #,创建子目录 ,,,ftp.cwd (LocalIP) ,,,with 开放(localFile,,模式=& # 39;rb # 39;), as f: ,,,,,,,ftp.storbinary (& # 39; STOR & # 39;, +,文件名,,f) ,,,return True ,,, ,, #,处理所有数据库 def ProcAllDB (): ,,,connDB =, pymysql.connect(主机=DBHost, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,=DBPort港 null null null null null null null null null null null null null null null null null null null null null null null null null null null nullPython3备份MySQL/MariaDB(本地+ FTP)