python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python自动备份文件

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

作者:清山博客

这篇文章主要为大家详细介绍了如何使用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自动备份文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文