Windows2012R2_UPUPW_网站的备份和还原(使用Python3脚本)
笺注:
这是在 Windows2012R2_UPUPW_NP7.0+Discuz!2.5 的基础上进行的。
要先安装软件wrar38b3.exe,然后把目录C:\Program Files (x86)\winrar复制到D盘;
要在开启MariaDB的时候,才能进行备份数据库;
备份脚本文件(d:\Backup.py)、备份存放目录(d:\Backup)如下:
备份站点目录和数据库的脚本内容:( d:\Backup.py )
#coding=utf-8
import os,shutil
import datetime
dt = datetime.datetime.now()
def func1():
try:
os.popen("D:/UPUPW_NP7.0_64/MariaDB/bin/mysqldump -uroot -p888 ultrax > d:/ultrax.sql").read()
path1 = "d:/ultrax.sql"
path2 = "d:/ultrax_" + dt.strftime('%Y%m%d') + ".sql"
os.rename(path1,path2)
print("数据库备份成功。")
except:
print("数据库备份失败。")
def func2():
try:
os.popen("d:/winrar/Rar.exe a D:/bbs.zhuohua.store_backup.rar D:/UPUPW_NP7.0_64/vhosts/bbs.zhuohua.store D:/*.sql").read()
# 格式:压缩软件的路径+名称 a 备份文件的路径+名称 被备份目录或文件的路径+名称
# 被备份目录或文件之间用空格隔开
path1 = "d:/bbs.zhuohua.store_backup.rar"
path2 = "d:/bbs.zhuohua.store_backup_" + dt.strftime('%Y%m%d_%H%M%S') + ".rar"
os.rename(path1,path2)
db_today = "d:/ultrax_" + dt.strftime('%Y%m%d') + ".sql"
os.remove(db_today) #删除当天的数据库文件
print("文件夹和文件备份成功。")
except:
print("文件夹和文件备份失败。")
def remove_file(old_path, new_path):
print(old_path)
print(new_path)
filelist = os.listdir(old_path) #列出该目录下的所有文件,listdir返回的文件列表是不包含路径的。
#print(filelist)
for file in filelist:
if file.endswith('.rar'):
src = os.path.join(old_path, file)
dst = os.path.join(new_path, file)
print('src:', src)
print('dst:', dst)
shutil.move(src, dst)
if __name__ == '__main__':
func1() #备份数据库
func2() #备份文件夹和文件
remove_file(r"d:/", r"d:/Backup") #批量移动.rar文件
在CMD命令行里手动运行Python脚本:
d:
python Backup.py
自动备份出来的压缩包:
压缩包里包含站点目录和该站点的数据库备份文件:
备份出来的站点目录里的文件和文件夹保存完整:(截图有省略)
D:\Backup\UPUPW_NP7.0_64\vhosts\bbs.zhuohua.store
############
############
还原站点
还原站点目录和文件:(不需要关闭UPUPW服务)
先清空D:\UPUPW_NP7.0_64\vhosts\bbs.zhuohua.store里的东西;
再把D:\Backup\UPUPW_NP7.0_64\vhosts\bbs.zhuohua.store里的东西覆盖到
D:\UPUPW_NP7.0_64\vhosts\bbs.zhuohua.store
还原站点数据库:
在服务器本地可以使用CMD命令行管理MariaDB:
C:\Users\Administrator>d:
D:\>cd D:\UPUPW_NP7.0_64\MariaDB\bin
D:\UPUPW_NP7.0_64\MariaDB\bin>mysql -u"root" -p"888"
查看所有的库:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ultrax |
+--------------------+
4 rows in set (0.090 sec)
删除一个库(ultrax):(还原前,最好删除旧库)
MariaDB [(none)]> drop database ultrax;
Query OK, 271 rows affected (0.630 sec)
重新创建库(ultrax):
MariaDB [(none)]> create database ultrax character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.007 sec)
切换到库(ultrax):
MariaDB [(none)]> use ultrax;
Database changed
以防中文出现乱码,最好先设置一下编码规则:
MariaDB [ultrax]> set names utf8;
Query OK, 0 rows affected (0.000 sec)
还原单个库(ultrax):
MariaDB [ultrax]> source D:\Backup\ultrax_20200601.sql
还原成功:
笺注:实验中,整个站点的还原都是成功。
######
结合系统自带的任务计划,实现自动备份:
服务器管理器》工具》任务计划程序》创建任务:
新建触发器:
新建操作:
注释:Python脚本的后缀必须要改为 .pyw
自定义任务的启动条件:
保存的时候要输入管理员Administrator的密码:
至此,任务计划完成了,到了指定的时间,备份任务会自动进行的了:
使用任务计划备份出来的压缩包:
注意,任务计划使用的Python脚本:(把Backup.py复制后,文件名改为Backup.pyw即可)
相关文章:
Windows2012R2安装Python3
Python3调用Windows命令
Windows2008R2_UPUPW_网站的备份和还原
Windows使用tcping+任务计划
CentOS6使用Python3脚本备份站点(Zabbix)+crontab计划任务 |