返回顶部
首页 > 资讯 > 后端开发 > Python >Python自动备份脚本的示例代码
  • 188
分享到

Python自动备份脚本的示例代码

Python自动备份脚本Python备份脚本 2022-12-26 12:12:59 188人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、代码一、前言 之前因为疫情常常不知道会不会被封在家里,又不想把电脑带过来带过去,就做了这个自动备份的脚本。 功能如下: 自动从指定根目录里将找到的所有指定后缀名的文件

一、前言

之前因为疫情常常不知道会不会被封在家里,又不想把电脑带过来带过去,就做了这个自动备份的脚本。

功能如下:

  • 自动从指定根目录里将找到的所有指定后缀名的文件备份到一个备份文件夹里;
  • 将备份文件夹中的文件自动和阿里云盘同步;
  • 原文件目录结构不会改变;
  • 可以屏蔽根目录下一级中不想要的文件夹/文件,下多级的不行;
  • 定时运行;

二、代码

创建了一个AutoTransfer类,这个类在初始化的时候会自动读取配置文件里的参数,如果没有配置文件也可以后续调用函数时来传参。

调用类里的move_scripts函数可以将指定后缀名的文件备份到备份文件夹里。

调用ali_login函数登录阿里云

调用find_id函数可以根据阿里云盘里的文件夹名查找文件夹id,这个id后面要用。

调用sync_folder函数进行同步,file_id就是上面的文件夹id,flag表示同步方式,True代表以本地为主。

import os
import JSON
from tqdm import tqdm
from shutil import copy
from aliGo import Aligo


class AutoTransfer:
    def __init__(self, config_file='transfer_config.json'):
        self.config_file = config_file
        # 自动从配置json里获取参数
        if os.path.exists(config_file):
            with open(config_file, mode='r', encoding='utf-8') as c:
                cfg = json.load(c)
            for k, v in cfg.items():
                setattr(self, k, v)

    def __setattr__(self, k, v):
        print(f"Current attribute '{k}' is '{v}'")
        self.__dict__[k] = v

    def move_scripts(self, org_root='', new_root='', blocks=[], exts=[]):
        # 更新参数
        if org_root:
            self.org_root = org_root
        if new_root:
            self.new_root = new_root
        if blocks:
            self.blocks = blocks
        if exts:
            self.exts = exts

        # 检查参数有无缺少
        missing_attr = [attr for attr in ['org_root', 'new_root', 'exts'] if attr not in self.__dict__.keys()]
        if missing_attr:
            raise AttributeError

        folders = os.listdir(self.org_root)
        backup_folders = [os.path.join(self.org_root, fd) for fd in folders if fd not in self.blocks]
        for fdr in tqdm(backup_folders):
            cur_files = self.list_dir(fdr)
            for f in cur_files:
                if os.path.splitext(f)[-1] in self.exts:
                    total_path = f.replace(self.org_root, self.new_root)
                    new_folder, f_name = os.path.split(total_path)
                    if not os.path.exists(new_folder):
                        os.makedirs(new_folder)
                    copy(f, total_path)

        self.remember_configs()

    @staticmethod
    def list_dir(cur_path: str):
        """
        列举文件根目录下各文件路径的函数。
        :param cur_path: 根目录。
        :return: 根目录下所有子目录里的所有文件。
        """
        file_paths = []
        for root, dirs, files in os.walk(cur_path):
            for file in files:
                file_paths.append(os.path.join(root, file))
        return file_paths

    def ali_login(self):
        self.aligo = Aligo()

    def find_id(self, target_name):
        for f in self.aligo.get_file_list():
            if f.name == target_name:
                return f.file_id

    def sync_folder(self, file_id='', flag=None):
        if file_id:
            self.file_id = file_id
        if flag:
            self.flag = flag
        self.remember_configs()
        self.aligo.sync_folder(self.new_root, self.file_id, self.flag)

    def remember_configs(self):
        config_dict = {k: v for k, v in self.__dict__.items() if
                       k in ['org_root', 'new_root', 'blocks', 'exts', 'file_id', 'flag']}
        with open(self.config_file, mode='w', encoding='utf-8') as f:
            json.dump(config_dict, f)

if __name__ == '__main__':
    at = AutoTransfer()
    at.move_scripts()
    # print(at.find_id('BF_projects'))
    at.ali_login()
    at.sync_folder()

接下来创建一个.bat文件:

@echo off

D:

cd 脚本路径

start python 脚本文件名.py

exit

最后创建定时任务即可:

如果想每天看着它运行,记得勾选“只在用户登录时运行”。

到此这篇关于Python 自动备份脚本的文章就介绍到这了,更多相关Python 自动备份脚本内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python自动备份脚本的示例代码

本文链接: https://lsjlt.com/news/175824.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python自动备份脚本的示例代码
    目录一、前言二、代码一、前言 之前因为疫情常常不知道会不会被封在家里,又不想把电脑带过来带过去,就做了这个自动备份的脚本。 功能如下: 自动从指定根目录里将找到的所有指定后缀名的文件...
    99+
    2022-12-26
    Python 自动备份脚本 Python 备份脚本
  • 备份shell脚本实例代码
    1、backup_run.sh #!/bin/sh # backup_run # script to run the backups # loads in a setting fi...
    99+
    2022-06-04
    脚本 备份 实例
  • python实现自动抢课脚本的示例代码
    目录自动抢课脚本使用手册1.准备工作2.配合使用py脚本和xlsx文件3.auto_get_lesson_pic_recognize功能介绍4.坐标版本(不建议使用)5.代码自动抢课...
    99+
    2024-04-02
  • VPS自动备份数据库到FTP的脚本代码
    1)确保自己在home目录(若不是,运行:cd /home) 2)新建backup文件夹(命令:mkdir backup) 3)新建脚本backup.sh vi backup.sh 复制以下代码(复制完后:...
    99+
    2022-06-04
    脚本 自动备份 代码
  • Linux oracle数据库自动备份自动压缩脚本代码
    #!#backup.sh##系统名称sysname=gzsyspath=/home/oracle/databak/$sysname/v_date=$(date '+%Y%m%d%H%M%S')logfil...
    99+
    2022-06-04
    脚本 自动备份 代码
  • Oracle 自动化备份脚本
    Oracle 日常RMAN备份脚本,很基础。但是对于多个需要备份的Oracle数据库,可以很简单实施,并利于后期批量状态的查询。 备份脚本,基于linux,windows环境需要适当修改。主脚本,会调用...
    99+
    2024-04-02
  • xtrabackup自动全备份脚本
    xtrabackup自动全备份脚本,具有发送邮件和主从判断功能. ##set environment## . ~/.bash_profile BASEDIR="/data_bak"  SPACE_...
    99+
    2024-04-02
  • Python实现自动添加脚本头信息的示例代码
    前言 每个人写脚本时的格式都会有所不同,有的会注明脚本本身的一些信息,有的则开门见山,这在小团队里其实没什么,基本别人做什么你也都知道,但如果放到大的团队就比较麻烦了,因为随着人数的增多,脚本成指数增长,如...
    99+
    2022-06-04
    示例 脚本 代码
  • Linux下Oracle自动备份脚本
    #!/bin/bash export ORACLE_HOME=/usr/local/instantclient_11_2export PATH=$ORACLE_HOME:$PATHexport TNS_AD...
    99+
    2024-04-02
  • MySQL增量备份的脚本代码
    这篇文章主要讲解了“MySQL增量备份的脚本代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL增量备份的脚本代码”吧!#!/bin/sh #aut...
    99+
    2024-04-02
  • 自动备份MYSQL的linux脚本分享
    本篇内容主要讲解“自动备份MYSQL的linux脚本分享”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“自动备份MYSQL的linux脚本分享”吧! 这是我写的...
    99+
    2024-04-02
  • 自动备份mysql数据库脚本
    自动备份mysql数据库脚本#!/bin/sh# NCONF database backup# Script by Chen# add (and adapt) the following line to t...
    99+
    2024-04-02
  • Windows环境MySQL自动备份脚本
    Windows环境MySQL自动备份脚本 备份需求 每个库单独一个文件压缩备份文件晚上23点定时备份 解决方案 创建一个MySQL备份脚本mysql_backup.bat,并在Windows任务计划程序中设置自动执行。 创建一个新的文本文件...
    99+
    2023-09-15
    mysql 数据库 java
  • Linux下自动删除过期备份和自动异地备份的脚本
    目录每天自动删除过期备份每天定时异地备份每天自动删除过期备份 首先编写一个简单的Shell脚本DeleteExpireBackup.sh: #!/bin/bash # 修改需要删除的路径 location="/data...
    99+
    2024-04-02
  • python10.4备份脚本的代码怎么写
    python10.4备份脚本的代码怎么写,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。版本四的代码是相当长的,所以很多人对其有束手无策之感,但是你通过以下的代码对其,有更好...
    99+
    2023-06-17
  • 0级增量备份脚本(示例)
    create script bak_0{ crosscheck backup; crosscheck archivelog all; allocate...
    99+
    2024-04-02
  • 1级增量备份脚本(示例)
    create script bak_1{ allocate channel c1 type disk; allocate chann...
    99+
    2024-04-02
  • exe2bat的脚本代码示例
    这篇文章将为大家详细讲解有关exe2bat的脚本代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。exe2bat的脚本 代码如下:fp=wscript.arguments(0) fn=rig...
    99+
    2023-06-08
  • linux中mysql备份shell脚本代码
    第一步:在你的linux服务器中定义备份目录: mkdir /var/lib/mysqlbackup cd /var/lib/mysqlbackup 第二步:下面是最重要的一步了,就是写定时备份脚本。 ...
    99+
    2022-06-04
    脚本 备份 代码
  • linux下oracle rman备份脚本代码
    本篇内容介绍了“linux下oracle rman备份脚本代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作