住宅主机定时自动备份大模型:从零搭建本地安全方案
如果你在自己的电脑上跑过大模型(比如 llama.cpp、Ollama 或本地 Stable Diffusion),模型文件动辄几十 GB,一旦硬盘坏了或者误删,重新下载太浪费时间。
这篇教程专门针对住宅主机用户,讲清楚如何用系统自带的定时任务工具,自动把大模型文件备份到另一个硬盘、NAS 或网盘目录,全程不需要额外软件,零基础也能照着做。
准备条件:先确认硬盘空间和备份目标
开始之前请确认三件事:
- 你的大模型文件放在哪个文件夹?以 Windows 为例常见位置是
C:\Users\你的用户名\.ollama\models或C:\models;Linux 下可能是/home/用户名/.ollama/models。 - 备份目标位置(比如外接硬盘、另一个分区、NAS 共享文件夹)必须提前挂载好,并且有足够的剩余空间(至少比模型文件大 50% 以防版本累积)。
- 你拥有这台电脑的管理员权限(Windows 需要管理员账户,Linux 需要 sudo)。
第一步:编写备份脚本
我们用一个简单的压缩+复制逻辑,既节省空间又保留原文件。
Windows 用户(PowerShell 脚本)
新建文本文件,命名为 backup_models.ps1,粘贴以下内容:
$source = "C:\Users\你的用户名\.ollama\models"
$dest = "D:\Backup\models_$(Get-Date -Format 'yyyyMMdd_HHmmss').zip"
Compress-Archive -Path $source -DestinationPath $dest -CompressionLevel Optimal
Write-Output "备份完成:$dest"
注意替换 你的用户名 和 D:\Backup 为实际路径。
如果想保留文件夹结构而不是压缩,可以用 Copy-Item:
Copy-Item -Path $source -Destination "D:\Backup\models_$(Get-Date -Format 'yyyyMMdd')" -Recurse -Force
Linux 用户(bash 脚本)
新建文件 backup_models.sh:
#!/bin/bash
SOURCE="/home/你的用户名/.ollama/models"
DEST="/mnt/backup/models_$(date +%Y%m%d_%H%M%S).tar.gz"
tar -czf "$DEST" -C "$(dirname "$SOURCE")" "$(basename "$SOURCE")"
echo "备份完成:$DEST"
保存后赋予执行权限:chmod +x backup_models.sh。
建议先用终端手动执行一次脚本,确认没有路径错误。
第二步:设置定时自动备份
根据你的操作系统选择对应方法。
Windows 使用任务计划程序
- 按
Win + R输入taskschd.msc回车,打开任务计划程序。 - 右侧点击“创建基本任务”,名称填“大模型自动备份”。
- 触发器选择“每天”,设置时间(比如凌晨 3 点,此时电脑通常空闲)。
- 操作选择“启动程序”,程序或脚本填
powershell.exe,添加参数填-ExecutionPolicy Bypass -File "C:\Scripts\backup_models.ps1"(将路径指向你刚才保存的脚本文件)。 - 完成。注意检查“不管用户是否登录都要运行”和“使用最高权限运行”两项(如果需要访问其他盘)。
Linux 使用 crontab
在终端输入 crontab -e,添加一行:
0 3 * * * /home/你的用户名/backup_models.sh >> /home/你的用户名/backup.log 2>&1
这表示每天凌晨 3 点执行脚本,并把日志输出到 backup.log 方便排错。
保存后重启 cron 服务:sudo systemctl restart cron。
避坑指南:权限、空间和命名冲突
- 权限不足:Windows 中如果脚本无法访问模型文件夹,给脚本文件夹和模型文件夹添加
Everyone读取权限(仅备份需要)。Linux 下脚本必须以有读权限的用户运行。 - 硬盘空间爆炸:每次备份生成一个新文件,长期累积会占满硬盘。建议在脚本中添加删除 7 天前的备份:在 PowerShell 中加
Get-ChildItem "D:\Backup\*.zip" | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-7) } | Remove-Item;在 bash 中加find /mnt/backup/ -name "*.tar.gz" -mtime +7 -delete。 - 备份过程中模型被占用:如果模型正在使用(比如 Ollama 服务运行中),压缩可能会失败或产生损坏文件。建议备份时间设置在模型不使用时,或者先停止相关服务。例如备份前在脚本中加入
ollama stop等指令(需根据实际服务调整)。 - 路径含空格:如果路径中有空格,必须用引号包裹,脚本中已经使用引号则安全。
效果验证:怎样确认备份真的跑成功了?
创建任务后的第二天,手动检查:
- Windows:在任务计划程序库中右键任务选择“运行”,观察是否执行成功。然后去目标文件夹找是否有新生成的压缩包,并尝试解压一个文件验证完整性。
- Linux:查看
backup.log或使用ls -lh /mnt/backup/查看文件时间。可以手动执行脚本并查看退出码:echo $?返回 0 表示成功。
如果脚本执行了但压缩包为空或损坏,检查源路径是否正确,以及是否有足够的磁盘空间写入临时压缩文件。
通过以上步骤,你的住宅主机就能在每天凌晨自动备份大模型文件了。
今后遇到硬盘故障或误操作,只要从备份目录恢复文件即可,省去重新下载和配置的麻烦。
如果需要备份到网盘或异地,可以在脚本中增加 rsync 或 rclone 同步步骤,建议从这篇基础教程逐步升级。