前提
Python3环境
安装百度云第三方库bypy
推荐Linux,Windows下应该也可以(博主没测试过)
脚本
大体分两个文件,一个是包装了bypy的自用类,一个是实际供命令行调用的主程序文件。
直接上代码,很多逻辑是博主自己用的,请自行根据需要删减或修改。
特别是发送短信提醒的功能,这个博主是使用了腾讯云的短信服务。读者请无视。(自行删除)
主程序
文件名:backupBaota.py (可以随意修改)
文件位置:/home/XXX/mytools/ (用户home目录下的mytools子目录,理论上任意文件夹都可以,不过博主没测试过)
#!/usr/bin/python
#-*- coding:utf-8 -*-
import os,sys
import logging
import requests,json
import time
import socket, getpass
from myLib import Backup2BDY
from myLib import MySmsLib
# 本程序用于备份宝塔面板的定时备份,包括网站和数据库(宝塔面板设置每日一次备份,本程序在cron里也设置每日一次即可)
# 本程序需要Python3,并安装百度云命令行工具bypy
# crontab例子(注意cron命令中的logs文件夹需要提前准备好)
# 45 15 * * * cd ~/mytools/ ; python3 ~/mytools/backupBaota.py >>~/mytools/logs/backupBaota.std.log 2>&1
currentPath = sys.path[0] + "/"
# 日志输出配置
LOG_FILE = currentPath + "logs/backupBaota.log"
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%Y/%m/%d %H:%M:%S"
logging.basicConfig(filename=LOG_FILE, level=logging.INFO, format=LOG_FORMAT, datefmt=DATE_FORMAT)
#logging.basicConfig(level=logging.INFO, format=LOG_FORMAT, datefmt=DATE_FORMAT)
# 保留多少份最新备份
KEEP_DAYS = 30
# 用来取得文件名中的日期部分的正则表达式(用于保留指定份数的最新文件)
# Db_mlc_20210502_150501.sql.gz
# Web_mango.natappvip.cc_20210502_150002.tar.gz
DATE_REGX = r'.*(\d{8})_\d{6}.*'
# 百度云远程目录
BDY_ROOT = '/raspiBackup/wwwBackup/'
BDY_PATH_SITE = BDY_ROOT + 'site/'
BDY_PATH_DATABASE = BDY_RO