代码需修改三处:
import os
import shutil
import requests
from datetime import datetime
# 获取当前日期和时间
current_date = datetime.now().strftime("%Y 年%m 月%d 日")
current_time = datetime.now().strftime("%H 点%M 分%S 秒")
backup_date = datetime.now().strftime("%Y%m%d") # 用于文件名的简洁日期格式
# 文件路径和压缩包名称(使用日期命名)
folder_to_backup = "此处修改路径为自己 bitwarden 的 DATA 文件夹路径"
backup_zip = f"/tmp/Bitwarden_{backup_date}.zip"
print("[1/4] 开始压缩文件夹...")
# 压缩文件夹
shutil.make_archive(backup_zip.replace('.zip', ''), 'zip', folder_to_backup)
print(f"[2/4] 文件夹已成功压缩,生成的备份文件:{backup_zip}")
# 获取备份文件大小(单位:MB ,保留两位小数)
file_size_mb = os.path.getsize(backup_zip) / (1024 * 1024)
file_size_text = f"{file_size_mb:.2f}MB"
print(f"备份文件大小:{file_size_text}")
# Telegram bot 信息
chat_id = "此处修改为自己 telegram 帐号 chat id"
bot_token = "此处修改为自己 telegram bot token"
telegram_api_url = f"https://api.telegram.org/bot{bot_token}/sendDocument"
# 推送文件和文字说明
message_caption = (
f"今日份 Bitwarden 自动备份成功,以下是本次备份的详细信息:\n"
f"备份时间:{current_date} {current_time}\n"
f"备份大小:{file_size_text}"
)
print("[3/4] 开始推送文件到 Telegram...")
with open(backup_zip, 'rb') as file:
response = requests.post(
telegram_api_url,
data={'chat_id': chat_id, 'caption': message_caption},
files={'document': file}
)
# 检查请求是否成功
if response.status_code == 200:
print("[4/4] 备份文件已成功发送到 Telegram !")
print(f"推送文件名:Bitwarden_{backup_date}.zip")
# 删除本地的 zip 文件
os.remove(backup_zip)
print(f"本地备份文件 {backup_zip} 已删除。")
else:
print(f"[4/4] 推送失败,错误信息:{response.text}")
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.