HMI 文件自动备份上传方案实施文档

1. 项目概述

本方案旨在实现触摸屏(HMI)或 Runtime 自动将生成的 PDF/CSV 文件备份至局域网服务器共享文件夹,支持实时传输或定时传输。

核心需求

  • 文件生成后自动传输至服务器共享路径(\Server\Backup)。
  • 支持实时备份和定时(Schedule)备份。
  • 支持日志记录、异常处理及文件版本管理。

2. 传输方式评估

2.1 FTP 自动上传方案

  • 流程:HMI 导出文件 → FTP 客户端脚本 → 上传到服务器 FTP 目录。

  • 优点

    • 支持跨系统传输(Windows / Linux)。
    • 传输速度快,支持断点续传(高级配置)。
  • 缺点

    • 需配置 FTP 服务和账户。
    • 需额外管理 FTP 权限与安全策略。

2.2 Windows 共享文件夹方案

  • 流程:HMI 导出文件 → 脚本复制到共享路径(\Server\Backup)。

  • 优点

    • 简单易用,无需额外服务。
    • 直接可在服务器端读取文件。
  • 缺点

    • 仅适用于支持 SMB/CIFS 协议的系统。
    • 需要确保用户权限设置正确。

3. 实施细节

3.1 文件命名规则

为防止文件覆盖,推荐采用以下命名格式:

Report_<YYYYMMDD_HHMMSS>.pdf
DataExport_<YYYYMMDD_HHMMSS>.csv

示例:

Report_20250826_143000.pdf
DataExport_20250826_143000.csv

3.2 自动备份脚本

方案 A:PowerShell 脚本(适用于 Windows HMI)
# 文件传输脚本 PowerShell 版
$source = "D:\HMI\export\*.*"
$destination = "\\Server\Backup"
$logFile = "D:\HMI\backup_log.txt"

# 创建日志函数
function Write-Log {
    param([string]$message)
    Add-Content -Path $logFile -Value "$(Get-Date) - $message"
}

try {
    robocopy $source $destination *.pdf *.csv /MIR /XO
    Write-Log "文件备份成功"
} catch {
    Write-Log "文件备份失败:$_"
}

配置方法

  1. 将脚本保存为 backup.ps1

  2. 在 Windows 任务计划程序中配置定时任务,运行:

    powershell.exe -ExecutionPolicy Bypass -File D:\HMI\backup.ps1
    
  3. 设置触发器(如每 5 分钟或文件生成后)。


方案 B:Python 脚本(跨平台方案)
import shutil
import os
import datetime
import logging

source = r"D:\HMI\export"
destination = r"\\Server\Backup"

logging.basicConfig(filename=r"D:\HMI\backup_log.txt",
                    level=logging.INFO,
                    format='%(asctime)s - %(message)s')

for file in os.listdir(source):
    if file.endswith(".pdf") or file.endswith(".csv"):
        src_path = os.path.join(source, file)
        dst_path = os.path.join(destination, file)
        try:
            shutil.copy2(src_path, dst_path)
            logging.info(f"备份成功: {file}")
        except Exception as e:
            logging.error(f"备份失败: {file} - {e}")

3.3 定时任务配置(Windows 示例)

  1. 打开“任务计划程序”。
  2. 创建任务 → 触发器选择“每日”“每 5 分钟”“文件变化”等。
  3. 操作选择运行 PowerShell/Python 脚本。
  4. 条件选项:勾选“唤醒计算机运行任务”。

4. 部署架构图

生成 PDF/CSV
PowerShell/Python 脚本
复制文件
HMI 触摸屏/Runtime
本地文件夹
局域网
服务器共享文件夹 \\Server\Backup
定期归档/长期存储

5. 日志与维护

  • 日志文件:记录每次备份状态、时间和异常信息。
  • 建议使用外部监控工具定期检查日志和共享文件夹容量。

6. 后续扩展

  • 支持远程云端同步(SFTP/OneDrive/FTP)。
  • 支持备份文件压缩、加密。
  • 增加 Web 界面可视化备份状态。

7. SFTP 自动上传备份方案的方式

补充 SFTP 方式,适合需要安全加密传输(比 FTP 更安全)的场景。

1. 方案概述

  • 使用 SFTP (SSH File Transfer Protocol) 通过加密通道传输文件。
  • 适合对安全性要求较高的工业控制或生产环境。
  • 可通过 Python + ParamikoWinSCP 脚本 实现。

2. 文件命名规则

与之前方案相同,建议采用时间戳防止覆盖:

Report_20250826_143000.pdf
DataExport_20250826_143000.csv

3. Python + Paramiko 实现

import paramiko
import os
import logging

# 本地路径和远程路径
local_dir = r"D:\HMI\export"
remote_dir = "/home/backup"

# 日志配置
logging.basicConfig(filename=r"D:\HMI\sftp_backup_log.txt",
                    level=logging.INFO,
                    format='%(asctime)s - %(message)s')

# 服务器连接信息
host = "192.168.1.100"
port = 22
username = "backupuser"
password = "password123"

try:
    # 建立SFTP连接
    transport = paramiko.Transport((host, port))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)

    # 遍历本地文件夹并上传
    for file in os.listdir(local_dir):
        if file.endswith(".pdf") or file.endswith(".csv"):
            local_path = os.path.join(local_dir, file)
            remote_path = remote_dir + "/" + file
            try:
                sftp.put(local_path, remote_path)
                logging.info(f"SFTP 备份成功: {file}")
            except Exception as e:
                logging.error(f"SFTP 备份失败: {file} - {e}")

    sftp.close()
    transport.close()

except Exception as e:
    logging.error(f"SFTP 连接失败: {e}")

4. 定时执行

  • 使用 Windows 任务计划程序运行:
python D:\HMI\sftp_backup.py
  • 设置为周期任务(如每 5 分钟 / 每小时执行一次)。

5. 安全建议

  • 使用 SSH 密钥认证 替代密码,增强安全性:

    • 生成 SSH 密钥对(ssh-keygen)。
    • 将公钥上传到服务器 ~/.ssh/authorized_keys
    • Python 连接时用 pkey = paramiko.RSAKey.from_private_key_file("key_path")

6. 适用场景

  • 生产环境需要加密通道。
  • 无法开放 Windows 共享文件夹或 FTP 端口。

要不要我帮你 生成一份整合了 FTP、SMB、SFTP 三种方案的最终版 Word 文档(含脚本 + 架构图)?
还是要 单独的 SFTP 版 Word 文档
另外,HMI 运行系统是 Windows CE / Windows 10 IoT / Linux 哪种?(决定脚本运行环境)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值