吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2183|回复: 12
收起左侧

[Python 原创] 使用Aligo定时备份服务器文件

  [复制链接]
xinliu 发表于 2022-11-12 09:44
本帖最后由 xinliu 于 2022-11-12 09:45 编辑

简介

在现在的互联网时代,数据显得尤为重要,我们的服务器中也有一些重要数据,如果服务器被攻击或者过期忘记取回数据,那造成的后果难以想象,所以要做好定时备份的习惯,但是人又懒怎么办呢,今天给出一个Aligo定时备份文件的解决方案。

源码

使用python3.8压缩备份文件,使用第三方库aligo来上传到阿里云盘

from aligo import Aligo
import time 
import datetime
import gzip
import os
import zipfile

# 备份目录路径数组
backup_dir_list = [
    '/www/lskypro/storage/app/uploads',
    '/www/shinie.top',
    '/www/bot',
    '/www/bimg.cc'
]
# 压缩包路径
compress_dir = '/www/aligo/backup'
# 压缩包文件名数组,可添加文件夹
compress_name_list = [
    'lskypro.zip',
    'shinie.top.zip',
    'bot.zip',
    'bimg.cc.zip'
]
# 阿里云盘上传路径
upload_dir = '服务器数据备份'
# 压缩包保存多少天
day=7
# 接收登录二维码邮件
email='xxxx@qq.com'
# 防伪字符串
security_str='backup-server-file'

t=time.strftime("%Y-%m-%d",time.localtime())

if __name__ == '__main__':
    ali = Aligo(email=(email, security_str))
    # 遍历备份目录
    for i in range(0,len(backup_dir_list)):
        remote_folder = ali.get_folder_by_path(upload_dir)

        # 遍历压缩目录
        for zip_file in os.listdir(compress_dir):
            t_be=zip_file[0:10]
            start = datetime.datetime.strptime(t_be, "%Y-%m-%d")
            end = datetime.datetime.strptime(t, "%Y-%m-%d")
            days = (end-start).days #计算天数差
            old_zip_file=compress_dir+'/'+t_be+"/"+compress_name_list[i]
            # 删除过期文件
            if days>day:
                print("旧文件:"+old_zip_file+"已过期")
                print("即将删除本地压缩文件:"+old_zip_file)
                if os.path.exists(old_zip_file):
                    os.remove(old_zip_file)

        # 创建压缩包完整目录 /www/backup/2022-11-11/
        compress_pull_dir=compress_dir+'/'+t+"/" 
        if os.path.exists(compress_pull_dir)==False:
            os.makedirs(compress_pull_dir)
        # 压缩
        zip_file=compress_pull_dir+compress_name_list[i]
        zip = zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED)
        for root,dirs,files in os.walk(backup_dir_list[i]):    #遍历统计
            for each in files:
                if os.path.exists(root+"/"+each):
                    zip.write(root+"/"+each)
        zip.close()
        # 同步文件夹(以本地文件为主)
        ali.sync_folder(local_folder=compress_dir, remote_folder=remote_folder.file_id,flag=True,follow_delete=True)

参数解释:

参数 解释 参考值
backup_dir_list 备份目录路径数组,可选择备份服务器的文件路径(必要) ['/www/lskypro/storage/app/uploads','/www/shinie.top']
compress_dir 压缩包存放的目录,可与备份路径不一样(必要) '/www/aligo/backup'
compress_name_list 压缩包文件名数组,需和backup_dir_list长度一致,且一一对应(必要) [    'lskypro.zip',    'shinie.top.zip']
upload_dir 阿里云盘上传路径(必要) 'AList/服务器数据备份'
day 压缩包保存天数(必要) 7
email 接收登录二维码邮件(必要) '1982989137@qq.com'
security_str 防伪字符串 'backup-server-file'

先运行一遍(记得改邮箱)登录阿里云盘,获取token

编辑/etc/crontab

2 0 * * * root /www/python3.8.6/bin/python3.8 /www/aligo/upload.py

不是root用户运行程序的话需要先修改.py文件权限:

chmod 777 /www/aligo/upload.py

python需要自行安装:Linux常用工具安装:python3.8.5 | 心流

效果

阿里云盘保存服务器数据

免费评分

参与人数 5吾爱币 +10 热心值 +5 收起 理由
nnzhs + 1 + 1 谢谢@Thanks!
Qiaoyuexuan + 1 + 1 谢谢@Thanks!
Guaishou123 + 1 我很赞同!
zhaobang08 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ab123 发表于 2022-11-12 19:19
很好的工具,也可以用于个人文件备份啊
 楼主| xinliu 发表于 2022-11-12 23:59
alan3258 发表于 2022-11-12 11:10
搞一个可执行程序最好了,要不服务器还的部署py环境,挺实用的

服务器如果是windows可以尝试用pyinstaller打包成.exe执行
linux的话那只能安装python环境了
alan3258 发表于 2022-11-12 11:10
搞一个可执行程序最好了,要不服务器还的部署py环境,挺实用的
DreamCN 发表于 2022-11-12 12:00
那些OSS备份太费钱了 这个确实不错
头像被屏蔽
yyb1813 发表于 2022-11-12 13:31
提示: 作者被禁止或删除 内容自动屏蔽
hanbing360 发表于 2022-11-12 14:00
我一直备份在Googledrive上,有现成的插件,有时间试一试大佬的这个。
 楼主| xinliu 发表于 2022-11-13 00:00
hanbing360 发表于 2022-11-12 14:00
我一直备份在Googledrive上,有现成的插件,有时间试一试大佬的这个。

没有魔法
Guaishou123 发表于 2022-12-2 15:27
有点麻烦,希望楼主可以优化使用方法
 楼主| xinliu 发表于 2022-12-3 09:28
Guaishou123 发表于 2022-12-2 15:27
有点麻烦,希望楼主可以优化使用方法

简单的无法应对复杂场景
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表