#vaultwarden backup
import subprocess
import datetime
import os
def create_encrypted_backup(password):
# 获取当前日期和时间
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M')
backup_file = f'/root/vaultwarden_{timestamp}.tar.enc'
# 创建加密备份
tar_command = f'tar -cvf - /root/vaultwarden/ | openssl enc -aes-256-cbc -e -out {backup_file} -pass pass:{password}'
subprocess.run(tar_command, shell=True, check=True)
return backup_file
def upload_to_rclone(backup_file, rclone_upload_path):
# 使用 rclone 上传文件
subprocess.run(["rclone", "copy", "--transfers", "5", backup_file, rclone_upload_path], check=True)
def cleanup_local_backup(backup_file):
# 删除本地备份文件
if os.path.exists(backup_file):
os.remove(backup_file)
def main():
password = '11111' # 替换为实际的密码
rclone_upload_path = 'download:vaultwarden加密备份/'
try:
backup_file = create_encrypted_backup(password)
upload_to_rclone(backup_file, rclone_upload_path)
cleanup_local_backup(backup_file)
print("备份上传成功,本地文件删除.")
except subprocess.CalledProcessError as e:
print(f"发生错误: {e}")
except Exception as e:
print(f"发生错误:{e}")
if __name__ == "__main__":
main()