当前位置: 代码网 > it编程>前端脚本>Python > Python实现Windows环境下自动备份文件到远程目录

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

2026年02月09日 Python 我要评论
每逢节假日,公司要求备份一次源码到共享目录。于是写了一个脚本,用来自动备份。工作原理:1.使用python的os.walk方法,遍历需要备份的目录文件。2.使用python的zipfile模块,将文件

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

工作原理:

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自动备份文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com