说明:
你是不是有这种焦虑,如果有一天电脑上的文件丢失了,怎么办?
云盘要钱,各种花式操作,还得需要网络,鸡肋
曹丹的固态硬盘
自从固态硬盘问世以来,就以访问速度快逐渐替代了机械硬盘;
但是固态硬盘有个致命的缺点,那就是故障率高,且一旦发生故障,数据相较于机械硬盘,很难被抢救回来,即使抢救回来,付出的代价也够买好几块固态了;
机械硬盘虽然速度慢,但是数据恢复的概率高,代价低,且个人使用机械硬盘没出现过故障;
所以很多被固态硬盘坑过的人,都选择系统盘用固态(保障速度),其他盘用机械(保障安全性),或者干脆全部用机械,还可以结合以下我说的备份方案;
这边建议:选硬盘时,一定要用品牌的(三星,希捷、西数等),一是质量有保障,二是即使坏了,PC3000恢复时有现成的方案
推荐使用机械硬盘

备份方案:
备份方案大致有三个方向
1. 最稳妥、无感的方案
这两种方案有点门槛,但不多,可以了解下磁盘的raid的几种模式
NAS到手别急着插盘!新手必看RAID科普:怎么组合才能既安全又不浪费空间?【绿联DH4300 Plus】
预算有限的话可以考虑硬盘阵列盒,参考绿联
1.1 nas盒子
有条件的当然直接上nas盒子了,很多企业用的都是这个方案,群晖等都是比较好的产品
如果不知道怎么选nas产品,可以先用虚拟机装一下nas产品对应的系统,试用下
黑群晖洗白,飞牛系统,都可以在虚拟机或者主机上进行试用,绿联也有试用
可以直接将整个硬盘进行备份
这里贴几个视频,方便大家熟悉:
【教程】如何正确备份NAS数据,确保NAS数据安全?从硬件到软件,一个视频解决备份难题!
VMware安装群晖7.2NAS系统保姆级教程,全自动媒体库、相册备份、文件共享功能免费体验测试
2026年3月最新黑群晖安装教程(支持DSM7.3、包含洗白教程)带你快速体验群晖NAS!
NAS到手别急着插盘!新手必看RAID科普:怎么组合才能既安全又不浪费空间?【绿联DH4300 Plus】

1.2 镜像卷
如果你的电脑可以插两块及以上硬盘(注意移动硬盘不算,必须是固定在主板上的),又不想折腾nas,可以使用这种方案
windwos给的备份方案
可以选择对某个分区进行镜像或者直接对一块硬盘进行镜像
同样贴几个视频,方便大家熟悉:
你知道Windows系统的跨区卷、带区卷、镜像卷、RAID-5卷吗?利用这"四卷"来进行更加高级的磁盘管理!

2. 云盘方案
如果接受云盘备份的话,这个也是个选择,个人使用推荐的:
2.1 onedrive
windwos原生,基本接近无感,用的很顺畅,但是只能备份它指定的文件夹(桌面,文档、下载、图片等)
之前的版本可以用符号链接,做到自定义同步文件夹,但是我用没起作用,可以试下,参考视频
2.2微力同步
这个很多人都在用,本人没用过,基于它呼声比较大,所以排在第二个
参考视频:
【14002】微力同步:免费不限容量的同步工具 DDNS 固定IP 同步盘 数据同步 备份 分享 移动端访问
2.3 百度云盘
额,我接受不了每次都自启一个大的dialog,还得登录啥的,啰嗦到不行
而且不充钱还限速,所以排到第三个
3. DIY方案
如果文件量比较大,接受不了云盘方案,但是电脑又不能做镜像,又不想买nas,可以使用这个方案;
这个方案需要至少两个存储设备,一个产生数据,一个备份数据
下面着重说这个方案

备份DIY方案:
准备
注意事项
下面的配置文件中的路径,一定要用绝对路径,且避免使用中文路径
DIY方案程序
可以直接从我的GItHub下载拿来用,也欢迎各路大神优化指正。
将下载的文件夹放在磁盘上,比如E盘根目录

部署步骤
1. 同步程序FreeFileSync
该方案使用的软件是FreeFileSync
下载地址为:点我下载,然后安装,记录下安装目录

关于FreeFileSync的基本使用,可以B站找些视频熟悉下,推荐下面这个视频
【14001】FreeFileSync:差异同步、镜像备份、增量备份 全能的同步软件 文件同步 本地同步 在线同步 RealTimeSync

可以用FreeFileSync自己生成一份,另存为批处理文件(.ffs_bach)
或者编辑备份脚本BatchRun.ffs_batch,文件夹中使用的是镜像备份
右键BatchRun.ffs_batch,进行编辑,关键的参数如下:

如果还要改其他参数,可以用FreeFileSync打开改文件进行修改保存:

在修改好备份脚本后,就开始编写调用脚本
打开script文件夹,编辑修改QQ_email.ps1,贴出下面代码
bash
#========================
# FreeFileSync 路径和批处理
#========================
$ffsExe = "D:\Program Files\FreeFileSync\FreeFileSync.exe"
$ffsBatch = "E:\backuptask\BatchRun.ffs_batch"
#========================
# 日志文件夹路径
#========================
$logDir = "D:\myself"
#========================
# 启动 FreeFileSync 批处理,不显示黑框
#========================
$proc = Start-Process -FilePath $ffsExe `
-ArgumentList $ffsBatch `
-WindowStyle Hidden `
-PassThru `
-Wait
#========================
# 获取最新的日志文件
#========================
$latestLog = Get-ChildItem -Path $logDir -Filter "*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $latestLog) {
Write-Host "日志文件夹中没有日志文件。"
exit
}
$logFile = $latestLog.FullName
#========================
# 打开日志文件,由用户查看(非阻塞)
#========================
Write-Host "正在打开最新日志文件,可自由查看..."
Start-Process -FilePath $logFile
#========================
# 邮件配置
#========================
$smtpServer = "smtp.qq.com"
$smtpPort = 587
$smtpUser = "8602776XX@qq.com"
$smtpPass = "yaxzgedolvucbbXX" # 授权码
$from = "8602776XX@qq.com"
$to = "8602776XX@qq.com" # 先发给自己测试,也可以换成别的邮箱
#$subject = "FreeFileSync 日志报告 - $(Get-Date -Format 'yyyy/MM/dd HH:mm:ss')"
#========================
# 检查日志是否存在
#========================
if (-not (Test-Path $logFile)) { Write-Host "日志文件不存在: $logFile" exit }
#========================
# 读取日志(防乱码)
#========================
$body = Get-Content $logFile -Raw -Encoding UTF8
#========================
# 邮件标题:取日志前65个字符,去掉换行和多余空格
#========================
$cleanTitle = ($body -replace "[`r`n]+", " " -replace "\s+", " ").Trim()
$subject = $cleanTitle.Substring(55, [Math]::Min(55, $cleanTitle.Length))
#========================
# 创建 SMTP 客户端
#========================
$smtp = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtp.EnableSsl = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($smtpUser, $smtpPass)
#========================
# 创建邮件对象
#========================
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = $from
$mail.To.Add($to)
$mail.Subject = $subject
$mail.Body = $body
$mail.BodyEncoding = [System.Text.Encoding]::UTF8
$mail.SubjectEncoding = [System.Text.Encoding]::UTF8
$mail.IsBodyHtml = $false
#========================
# 添加附件(日志文件)
#========================
$mail.Attachments.Add($logFile)
#========================
# 发送邮件
#========================
try {
$smtp.Send($mail)
Write-Host "邮件发送成功!"
} catch {
Write-Host "邮件发送失败:" $_.Exception.Message
}
关于上面代码的解释:
- 该*.ps1文件,需要保存的格式为UTF-8-BOM 编码

- 需要修改的参数

- 功能解释

- 如果要开通邮件通知,需要完善邮件的相应配置,如果不需要邮件通知,则把邮件部分删了就行


2. 编写调用*.ps1文件的脚本
在*.ps1文件的同目录下,创建*.vbs文件,用来调用*.ps1文件
如:run_sync.vbs
vbnet
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "powershell.exe -NoProfile -ExecutionPolicy Bypass -File ""E:\backuptask\script\QQ_email.ps1""", 0, False

在编写好脚本后,就可以点击VBS文件进行测试,如果你装了杀毒软件(360等需要添加信任)



成功收到通知

3.任务计划程序
为了保证任务的自动运行,需要用到windows自带的任务计划程序。

任务计划程序,需要保证Task Scheduler服务启动,且开机自启

可以自己创建定时任务
也可以将文件夹中的xml文件直接导入

在导入任务后,主要修改脚本的路径,选择导入的任务→属性→操作,对脚本的路径进行增删改

要保证这个路径的正确
关于触发策略,选择触发器,针对个人需要进行修改

如果装了杀毒软件的话(比如360),这个定时任务很可能会被回收,注意恢复
如果还有其他问题,可以参考文章
配置完后,可以主动运行该定时任务,观察下是否正常运行

如果点击运行后,同样备份成功,并且打开了日志文件,收到了邮件通知,那么就表示定时任务成功
4. 手动触发
可以把VBS脚本发送到桌面快捷方式,有重要的脚本手动触发,及时备份

可以更换下,快捷方式的图标和名字,方便醒目的调用


这样备份方案就做好了
如果想结合着onedrive,可以把备份的文件,拷贝到onedrive指定的文件夹即可
