Windows文件备份方案推荐

说明:

你是不是有这种焦虑,如果有一天电脑上的文件丢失了,怎么办?

云盘要钱,各种花式操作,还得需要网络,鸡肋

曹丹的固态硬盘

自从固态硬盘问世以来,就以访问速度快逐渐替代了机械硬盘;

但是固态硬盘有个致命的缺点,那就是故障率高,且一旦发生故障,数据相较于机械硬盘,很难被抢救回来,即使抢救回来,付出的代价也够买好几块固态了;

机械硬盘虽然速度慢,但是数据恢复的概率高,代价低,且个人使用机械硬盘没出现过故障;

所以很多被固态硬盘坑过的人,都选择系统盘用固态(保障速度),其他盘用机械(保障安全性),或者干脆全部用机械,还可以结合以下我说的备份方案;

这边建议:选硬盘时,一定要用品牌的(三星,希捷、西数等),一是质量有保障,二是即使坏了,PC3000恢复时有现成的方案

推荐使用机械硬盘


备份方案:

备份方案大致有三个方向

1. 最稳妥、无感的方案

这两种方案有点门槛,但不多,可以了解下磁盘的raid的几种模式

NAS到手别急着插盘!新手必看RAID科普:怎么组合才能既安全又不浪费空间?【绿联DH4300 Plus】

什么是硬盘阵列?Raid 5 为什么不安全?

预算有限的话可以考虑硬盘阵列盒,参考绿联

1.1 nas盒子

有条件的当然直接上nas盒子了,很多企业用的都是这个方案,群晖等都是比较好的产品

如果不知道怎么选nas产品,可以先用虚拟机装一下nas产品对应的系统,试用下

黑群晖洗白,飞牛系统,都可以在虚拟机或者主机上进行试用,绿联也有试用

可以直接将整个硬盘进行备份

这里贴几个视频,方便大家熟悉:

如何将windows整机备份到群晖NAS中?

【教程】如何正确备份NAS数据,确保NAS数据安全?从硬件到软件,一个视频解决备份难题!

VMware安装群晖7.2NAS系统保姆级教程,全自动媒体库、相册备份、文件共享功能免费体验测试

2026年3月最新黑群晖安装教程(支持DSM7.3、包含洗白教程)带你快速体验群晖NAS!

群晖NAS和其它NAS有什么区别,各有什么优势!

NAS到手别急着插盘!新手必看RAID科普:怎么组合才能既安全又不浪费空间?【绿联DH4300 Plus】

1.2 镜像卷

如果你的电脑可以插两块及以上硬盘(注意移动硬盘不算,必须是固定在主板上的),又不想折腾nas,可以使用这种方案

windwos给的备份方案

可以选择对某个分区进行镜像或者直接对一块硬盘进行镜像

同样贴几个视频,方便大家熟悉:

两块硬盘互备,数据永不丢失

你知道Windows系统的跨区卷、带区卷、镜像卷、RAID-5卷吗?利用这"四卷"来进行更加高级的磁盘管理!

2. 云盘方案

如果接受云盘备份的话,这个也是个选择,个人使用推荐的:

2.1 onedrive

windwos原生,基本接近无感,用的很顺畅,但是只能备份它指定的文件夹(桌面,文档、下载、图片等)

之前的版本可以用符号链接,做到自定义同步文件夹,但是我用没起作用,可以试下,参考视频

一个小技巧,使用OneDrive同步电脑上的任意文件夹

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
}

关于上面代码的解释:

  1. 该*.ps1文件,需要保存的格式为UTF-8-BOM 编码
  1. 需要修改的参数
  1. 功能解释
  1. 如果要开通邮件通知,需要完善邮件的相应配置,如果不需要邮件通知,则把邮件部分删了就行

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指定的文件夹即可

相关推荐
加斯顿工程师2 小时前
Windows系统使用Ollama本地化部署Qwen3.5-9B模型教程
windows·大模型·本地部署·ollama·qwen3.5
爱学习的小囧3 小时前
VMware ESXi V7 无 vCenter 虚拟机磁盘缩减攻略:安全释放存储空间(不丢数据)
服务器·网络·windows·安全·esxi·虚拟化
桌面运维家3 小时前
Windows 10打印机端口占用:高效释放与安全配置指南
windows·安全
流星白龙3 小时前
【MySQL】6.MySQL基本查询(1)
数据库·windows·mysql
武藤一雄3 小时前
C# 核心技术解析:Parse vs TryParse 实战指南
开发语言·windows·microsoft·微软·c#·.netcore
大强同学4 小时前
亲身测评 Web Access 改写 AI 联网使用体验
人工智能·windows·microsoft·ai编程
徐子元竟然被占了!!4 小时前
Windows-net.exe
windows
m0_706653235 小时前
Windows防火墙的命令行管理与实用配置指南
windows
武藤一雄6 小时前
深入理解 C# 中的 sizeof 与非托管类型约束
开发语言·windows·c#·.net·.netcore