欢迎光临
我们一直在努力

使用Aligo定时备份服务器文件

本帖最后由 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

赞(0) 打赏
未经允许不得转载:哈哈网 » 使用Aligo定时备份服务器文件

评论 抢沙发

© 2003-2024   哈哈网   网站地图

冀ICP备2023023099号

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏