deploy.py 2.5 KB
Newer Older
wanli's avatar
wanli committed
1 2 3 4 5 6 7 8
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-01 14:46:22
LastEditors: your name
Description: In User Settings Edit
FilePath: \evm-store\backend\deploy.py
'''
wanli's avatar
wanli committed
9
import os
wanli's avatar
wanli committed
10
import json
wanli's avatar
wanli committed
11 12
import shutil
import configparser
wanli's avatar
wanli committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26
from datetime import datetime
from operator import itemgetter

# 应用和数据分离
# 数据库文件备份在evm_app_store_files/epkdb
# 探测文件变化,定时备份到 epkdb

config = configparser.ConfigParser()
config.read(os.path.join(os.getcwd(), "config.ini"))

# 根据文件最后修改时间排序文件
def getSortDir(path):
    lists = os.listdir(path)
    print(lists)
wanli's avatar
wanli committed
27
    lists.sort(key=lambda fn: os.path.getmtime(os.sep.join([path, fn])))
wanli's avatar
wanli committed
28 29
    filepath = os.path.join(path, lists[-1])
    print(filepath)
wanli's avatar
wanli committed
30
    return lists
wanli's avatar
wanli committed
31 32 33 34 35

def isFileChange(dt):
    f = os.sep.join([os.getcwd(), config.get("database", "filename")])
    if dt:
        return dt != int(os.path.getmtime(f))
wanli's avatar
wanli committed
36
    else:
wanli's avatar
wanli committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
        return int(os.path.getctime(f)) != int(os.path.getmtime(f))

def backupDatabase():
    src = config.get("database", "filename")
    dst = os.path.abspath(config.get("uploads", "upload_path"))
    dst = os.path.normpath(os.sep.join([dst, config.get("uploads", "db_dir")]))
    if not os.path.exists(dst):
        os.makedirs(dst)
    # 判断文件创建时间和修改时间是否一致,不一致则备份
    shutil.copy(src, dst)
    src = os.sep.join([dst, src])
    dst = os.sep.join([dst, f"{datetime.now().strftime('%Y%m%d%H%M%S')}-{config.get('database', 'filename')}"])
    os.rename(src, dst)

def removeExpiredFiles():
    path = os.path.abspath(config.get("uploads", "upload_path"))
    path = os.path.normpath(os.sep.join([path, config.get("uploads", "db_dir")]))

    if not os.path.exists(path):
        os.makedirs(path)

    file_count = len(os.listdir(path))
    if file_count > 10:
        file_list = getSortDir(path)[:-10]
        for f in file_list:
wanli's avatar
wanli committed
62
            os.remove(os.sep.join([path, f]))
wanli's avatar
wanli committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

def getModifyTime():
    result = {}
    with open("./backupData.json", "r+") as f:
        result = json.loads(f.read())
    return result

def saveMofidyTime(result):
    db = config.get("database", "filename")
    result["lastModifyDateTime"] = int(os.path.getmtime(db))
    with open("./backupData.json", "w+") as f:
        f.write(json.dumps(result))
    return result

def main():
    removeExpiredFiles()

    result = getModifyTime()
    if isFileChange(result["lastModifyDateTime"]):
        saveMofidyTime(result)
        backupDatabase()
wanli's avatar
wanli committed
84 85

if __name__ == "__main__":
wanli's avatar
wanli committed
86
    main()