备份MeterSphere数据库数据并上传到seafile私有云盘
File Upload - web-api (seafile.com)
060-轻量级基于curl的seafile上传脚本 - 掘金 (juejin.cn)
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()()
分类:
Python / 代码片段
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)