#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()
 
 
Back to Top