返回列表 发帖

Windows2012R2_UPUPW_网站的备份和还原(使用Python3脚本)

笺注:
这是在 Windows2012R2_UPUPW_NP7.0+Discuz!2.5 的基础上进行的。


要先安装软件wrar38b3.exe,然后把目录C:\Program Files (x86)\winrar复制到D盘;
要在开启MariaDB的时候,才能进行备份数据库;

备份脚本文件(d:\Backup.py)、备份存放目录(d:\Backup)如下:
图片1.png
2021-4-3 15:59



备份站点目录和数据库的脚本内容:( 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

图片2.png
2021-4-3 16:01



自动备份出来的压缩包:
图片3.png
2021-4-3 16:02



压缩包里包含站点目录和该站点的数据库备份文件:
图片4.png
2021-4-3 16:02



备份出来的站点目录里的文件和文件夹保存完整:(截图有省略)
D:\Backup\UPUPW_NP7.0_64\vhosts\bbs.zhuohua.store
图片5.png
2021-4-3 16:02






############
############

还原站点

还原站点目录和文件:(不需要关闭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"
图片6.png
2021-4-3 16:04



查看所有的库:
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

还原成功:
图片7.png
2021-4-3 16:05



笺注:实验中,整个站点的还原都是成功。













######

结合系统自带的任务计划,实现自动备份:

服务器管理器》工具》任务计划程序》创建任务:
图片8.png
2021-4-3 16:06



新建触发器:
图片9.png
2021-4-3 16:06


图片10.png
2021-4-3 16:06


图片11.png
2021-4-3 16:06



新建操作:
图片12.png
2021-4-3 16:07


图片13.png
2021-4-3 16:07

注释:Python脚本的后缀必须要改为 .pyw

图片14.png
2021-4-3 16:08



自定义任务的启动条件:
图片15.png
2021-4-3 16:08



保存的时候要输入管理员Administrator的密码:
图片16.png
2021-4-3 16:08



至此,任务计划完成了,到了指定的时间,备份任务会自动进行的了:
图片17.png
2021-4-3 16:08




使用任务计划备份出来的压缩包:
图片18.png
2021-4-3 16:09



注意,任务计划使用的Python脚本:(把Backup.py复制后,文件名改为Backup.pyw即可)
图片19.png
2021-4-3 16:09






相关文章:
Windows2012R2安装Python3
Python3调用Windows命令

Windows2008R2_UPUPW_网站的备份和还原
Windows使用tcping+任务计划

CentOS6使用Python3脚本备份站点(Zabbix)+crontab计划任务

返回列表