Python实现Windows环境下自动备份文件到远程目录

 更新时间:2026年02月09日 09:22:23   作者:清山博客  
这篇文章主要为大家详细介绍了如何使用Python实现Windows环境下自动备份文件到远程目录,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

每逢节假日,公司要求备份一次源码到共享目录。于是写了一个脚本,用来自动备份。

工作原理:

1.使用python的os.walk方法,遍历需要备份的目录文件。

2.使用python的zipfile模块,将文件夹打包成zip压缩包。

import zipfile
import os
from datetime import datetime

# 压缩文件夹到指定路径
def compress_directory(directory_path, output_path):
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(directory_path):
            for file in files:
                file_path = os.path.join(root, file)
                if file_path.find(".git") > -1:
                    zipf.write(file_path, arcname=os.path.relpath(
                        file_path, directory_path))


if __name__ == '__main__':
    # 源码目录
    dirPath = "E:\\Git"

    # 备份目录(存放压缩文件)
    toPath = '\\\\192.168.*.*\\源码备份\\2024-04-03\\'

    if not os.path.exists(toPath):
        os.makedirs(toPath)

    dirs = {}
    for file in os.listdir(dirPath):
        file_path = os.path.join(dirPath, file)
        # 条件筛选
        if os.path.isdir(file_path) and file_path.find("[自定义过滤条件]") > -1:
            dirs[file] = file_path

    print("开始备份源码,共"+str(len(dirs))+"个目录")
    i = 0
    for key, val in dirs.items():
        i = i+1
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") +" 正在备份("+str(i)+"/"+str(len(dirs)) + "):"+val)
        compress_directory(val, os.path.join(toPath, key+".zip"))
        print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") +" 备份完毕("+str(i)+"/"+str(len(dirs)) + "):"+val)

注意,请将文中的 dirPath、toPath 替换为你实际的路径,路径"\"需转义"\\"。

# 源码目录
 dirPath = "E:\\Git"
# 备份目录(存放压缩文件)
 toPath = '\\\\192.168.*.*\\源码备份\\2024-04-03\\'
#[自定义过滤条件] 可以设置过滤规则。

方法补充

下面是小编整理的其他Python备份文件的方法,希望对大家有所帮助

1.Python实现制作文件的备份

import os
 
def backup_file(filename):
    """制作文件的备份
    Args:
        filename: 要备份的文件名
    Returns:
        None
    """
 
    # 判断文件是否存在
    if not os.path.isfile(filename):
        print("文件不存在")
        return
 
    # 获取文件路径和扩展名
    filepath, ext = os.path.splitext(filename)
 
    # 生成备份文件名
    backup_filename = filepath + "_backup" + ext
 
    # 判断备份文件是否存在
    if os.path.isfile(backup_filename):
        # 覆盖备份文件
        print("备份文件已存在,将覆盖原有文件")
    else:
        # 创建备份文件
        print("正在创建备份文件...")
 
    # 复制文件
    shutil.copyfile(filename, backup_filename)
 
    # 提示成功信息
    print("备份成功")
 
# 使用示例
filename = "/path/to/file.txt"
 
backup_file(filename)

2.Python中的文件备份

def copyFile():
    # 接收用户输入的文件名
    old_File = input('请输入要备份的文件名')
    file_list = old_File.split('.')
    # 构建新的文件名.加上备份的后缀
    new_file = file_list[0] + '_备份.' + file_list[1]
    old_f = open(old_File, 'r')  # 打开需要备份的文件
    new_f = open(new_file, 'w')  # 以写的模式去打开新文件,不存在则创建
    content = old_f.read()  # 将文件内容读取出来
    new_f.write(content)  # 将读取的内容写到备份文件中
    old_f.close()
    new_f.close()
    pass
 
 
copyFile()

如果文件太大,如超过1-2个g,这个代码就不太合适了。我们的内存是不够的。

如果处理超大文件,一次性将全部内容读取到内存地址是不合适的,接下来进行代码修改。

def copyFile():
    # 接收用户输入的文件名
    old_File = input('请输入要备份的文件名')
    file_list = old_File.split('.')
    # 构建新的文件名.加上备份的后缀
    new_file = file_list[0] + '_备份.' + file_list[1]
    try:
        with open(old_File, 'r') as old_f, open(new_file, 'w') as new_f:
            while True:
                content = old_f.read(1024)  # 一次性读取1024个字符
                new_f.write(content)
                if len(content)<1024:
                    break
    except Exception as msg:
        print(msg)
 
copyFile()

到此这篇关于Python实现Windows环境下自动备份文件到远程目录的文章就介绍到这了,更多相关Python自动备份文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何用Python进行时间序列分解和预测

    如何用Python进行时间序列分解和预测

    这篇文章主要介绍了如何用Python进行时间序列分解和预测,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02
  • PyQt5每天必学之进度条效果

    PyQt5每天必学之进度条效果

    这篇文章主要为大家详细介绍了PyQt5实现进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 快速排序的算法思想及Python版快速排序的实现示例

    快速排序的算法思想及Python版快速排序的实现示例

    快速排序算法来源于分治法的思想策略,这里我们将来为大家简单解析一下快速排序的算法思想及Python版快速排序的实现示例:
    2016-07-07
  • Python入门教程(九)Python字符串介绍

    Python入门教程(九)Python字符串介绍

    这篇文章主要介绍了Python入门教程(九)Python字符串,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • 对Python中Iterator和Iterable的区别详解

    对Python中Iterator和Iterable的区别详解

    今天小编就为大家分享一篇对Python中Iterator和Iterable的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python中计算圆周率的方法汇总(方法合集)

    Python中计算圆周率的方法汇总(方法合集)

    这篇文章主要介绍了Python中计算圆周率的方法汇总(方法合集),包括使用math库中的pi常量,使用级数展开公式计算π,本文给大家列举多种方法帮助大家学习,需要的朋友可以参考下
    2022-06-06
  • Python统计某列不同值的个数的示例代码

    Python统计某列不同值的个数的示例代码

    在数据分析和数据处理中,统计数据往往集中在特定列中不同值的出现次数,本文主要介绍了Python统计某列不同值的个数的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 在jupyter notebook 添加 conda 环境的操作详解

    在jupyter notebook 添加 conda 环境的操作详解

    这篇文章主要介绍了在jupyter notebook 添加 conda 环境的操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python 无监督生成模型的示例

    python 无监督生成模型的示例

    无监督生成模型在机器学习中扮演着重要角色,特别是当我们在没有标签数据的情况下想要生成新的样本或理解数据的内在结构时,这篇文章主要介绍了python 无监督生成模型的示例,需要的朋友可以参考下
    2024-07-07
  • 对Python生成器、装饰器、递归的使用详解

    对Python生成器、装饰器、递归的使用详解

    今天小编就为大家分享一篇对Python生成器、装饰器、递归的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论