备份MeterSphere数据库数据并上传到seafile私有云盘

File Upload - web-api (seafile.com)

060-轻量级基于curl的seafile上传脚本 - 掘金 (juejin.cn)

在线curl命令转代码 (lddgo.net)

from datetime import datetime

import requests
import os


class UploadMeterSphereBakSql:
    username = 'xxxcom.cn'
    password = 'xxx'

    def gen_sql_bak(self):
        sql_bak_name = f"metersphere_{datetime.now().strftime('%Y-%m-%d')}.sql"
        sql_bak_name_compress = f"{sql_bak_name}.tgz"
        # 备份
        os.system(f'docker exec -i mysql mysqldump -uroot -pxx123@mysql metersphere > {sql_bak_name}')
        # 压缩文件
        os.system(f'tar -zcvf {sql_bak_name_compress} {sql_bak_name}')
        return sql_bak_name_compress

    def get_token(self):
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded',
        }

        data = f'username={self.username}&password={self.password}'

        return requests.post('https://xxxcom.cn:4430/api2/auth-token/', headers=headers, data=data).json()[
            'token']

    def gen_upload_url(self, token):
        headers = {
            f'Authorization': f'Token {token}',
        }

        params = {
            'p': '13--xxx',
        }

        return requests.get('https://xxx.com.cn:4430/api2/repos/xxx-1530caef6354/upload-link',
                            params=params, headers=headers).json()

    def upload_sql(self, token, file_name, upload_url):
        headers = {
            f'Authorization': f'Token {token}',
        }

        files = {
            'file': open(f'./{file_name}', 'rb'),
            'parent_dir': (None, '13--xxx'),
        }

        print(requests.post(upload_url, headers=headers, files=files))

    def __call__(self, *args, **kwargs):
        token = self.get_token()
        upload_url = self.gen_upload_url(token)
        file_name = self.gen_sql_bak()
        self.upload_sql(token, file_name, upload_url)


if __name__ == '__main__':
    UploadMeterSphereBakSql()()

 

posted @   你说夕阳很美  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示