用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

网站批量备份自动化零成本方案:15个WordPress站加8个静态页面站靠一个不到80行的Shell脚本加宝塔计划任务每天凌晨3点自动打包上传到腾讯云COS运行半年经历一次硬盘故障两小时全部恢复

手里有15个WordPress站和8个静态页站,靠一个Shell脚本加宝塔计划任务每天自动打包传到腾讯云COS,半年没丢过任何数据

23个网站,分布在两台服务器上。每天凌晨3点,一个不到80行的Shell脚本准时启动,把所有站点的文件打包、数据库导出、压缩加密、上传到腾讯云COS,整个流程跑完大概18分钟。这套方案跑了半年多,中间经历过一次服务器硬盘故障,从COS把备份拉回来恢复,前后只花了不到两小时。

说这个不是炫耀脚本多厉害,而是想讲一件事:批量备份这件事,方案选对了、流程搭好了,后面几乎零维护成本。怕的是你一开始没想清楚,23个站一个一个手动去面板里点"备份",点完还要下载到本地——那时间成本就不是备份工具的问题,是流程设计的问题。

23个站批量备份方案效果速览

日均备份耗时(23站全量)约18分钟
单次备份数据量约8.6 GB(压缩加密后约4.2 GB)
COS月度存储费用约¥14(保留最近7天备份)
备份保留策略本地保留3天 + COS保留7天 + 每月一份归档保留12个月
历史故障恢复记录1次(硬盘故障),恢复耗时约2小时,零数据丢失

一、批量备份和单站备份,差的不只是数量

单个网站备份很简单:进面板、点备份、下载、完事。三分钟搞定。

但当站点数量超过5个,事情就变了。逐个登录面板、逐个点击备份、逐个下载——一个来回至少要十几分钟。这还是你记得做的前提下。更常见的情况是:想起来的时候备份一下,想不起来就当没这回事。等服务器出了问题才发现,最近一次备份是三个月前的。

1 - 网站批量备份自动化零成本方案:15个WordPress站加8个静态页面站靠一个不到80行的Shell脚本加宝塔计划任务每天凌晨3点自动打包上传到腾讯云COS运行半年经历一次硬盘故障两小时全部恢复 - UC建站系统

批量备份解决的核心问题就三个:

· 统一调度:不用逐个站点操作,一个任务把所有站点覆盖到位

· 自动执行:设定好时间和频率,到点自动跑,不需要人盯着

· 异地存储:备份文件自动上传到对象存储/云盘,不跟源站放在同一台机器上

说白了,批量备份的本质是把"人肉备份"变成"机器备份"。人力成本降到零,遗漏概率降到零。

二、备份什么:不是所有东西都需要备份

批量备份之前,先搞清楚一个站到底有哪些东西需要备份。很多人上来就把整个服务器打包——几十个G、上百个G,结果每天备份跑两个多小时,存储费用一个月几百块,实际上大部分空间被日志文件、缓存文件、临时文件占满了。

一个网站的备份内容分成四块,优先级和频率不一样:

备份内容变更频率备份建议典型大小
数据库高(每次发布/用户操作都变)每日备份 丢失数据库等于丢失全部内容几十MB~几百MB
上传文件/附件中(每次上传图片/文件才变)每日备份 但可做增量,不必每次全量几百MB~几十GB
主题/插件代码低(只有手动更新才变)每周备份 或每次修改后手动备份几十MB~几百MB
配置文件极低(初次配置后基本不动)一次备份 改配置时再更新几KB~几MB

所以批量备份脚本里,核心操作是两条:mysqldump导出数据库 + tar打包网站文件目录。配置文件(nginx配置、.env等)一次性备份到安全位置,不需要每天跑。

三、六种批量备份方案,从零代码到全自动

按技术门槛从低到高排,每个站长都能找到自己能上手的那一档。

1. 宝塔面板批量操作(零代码,最省事)

宝塔面板从7.x版本开始支持网站列表页多选批量操作。进"网站"页面,勾选需要备份的站点,右键选择"备份"即可一键打包。

优点:完全可视化,不需要写任何代码
缺点:每次都要手动操作,站点超过10个还是很累;备份文件存在本地服务器上,没有异地副本

进阶用法是配合宝塔的"计划任务"功能:添加Shell脚本类型的计划任务,用宝塔内置的bt命令遍历所有站点并执行备份。

#!/bin/bash# 宝塔计划任务批量备份脚本BACKUP_DIR="/www/backup/site_$(date +%Y%m%d)"mkdir -p "$BACKUP_DIR"# 获取所有网站域名websites=($(bt 10 | awk 'NR>2 && NF>=2 {print $2}'))for site in "${websites[@]}"; doecho "正在备份: $site"tar -czf "${BACKUP_DIR}/${site}_files.tar.gz" \-C /www/wwwroot "$site" 2>/dev/nulldone# 删除7天前的旧备份find /www/backup -type d -name "site_*" -mtime +7 -exec rm -rf {} \;

这个脚本放到计划任务里,设置每天凌晨执行,就能实现最基本的批量自动备份。

2. 宝塔面板 + 对象存储插件(零代码 + 异地)

上面方案的致命问题是备份和源站在同一台机器上——服务器挂了,备份也一起没了。解决方法是加一层对象存储上传。

宝塔面板自带腾讯云COS、阿里云OSS、七牛云等存储插件。配置好存储桶和密钥后,在计划任务里把"备份到"选为对应的云存储,备份文件会自动上传。整个过程同样是可视化的,不需要写一行代码。

腾讯云COS标准存储,50GB数据一个月大概几块钱。如果数据量不大(单日备份压缩后在5GB以内),月度费用可以控制在10元以下。

3. WordPress多站点管理 + 统一备份

如果你管理的站点全都是WordPress,可以考虑用一个集中管理面板来统一调度备份。主流方案有两个:

· MainWP + UpdraftPlus扩展:MainWP是一个自建的管理面板,装在一个单独的WordPress站点上,通过它管理所有子站。配合UpdraftPlus扩展,可以在一个界面里给所有子站设置备份计划、触发备份、监控备份状态。MainWP本体免费,UpdraftPlus扩展免费版功能基本够用

· ManageWP:SaaS形态的WordPress管理平台,免费版支持每月一次自动备份,付费版支持按需备份和异地存储。好处是不需要自己部署,缺点是备份频率和存储空间受限于套餐

这两种方案的核心价值:不是备份功能本身有多强,而是"集中管理"——不需要登录每一台服务器、不需要挨个进面板,一个界面看到所有站点的备份状态和最近一次备份时间。站点越多,这个价值越大。

4. Shell脚本 + crontab(灵活度最高)

脱离了面板的束缚,直接写Shell脚本控制备份全流程,自由度最高,但也需要一定的Linux基础。这是我自己在用的方案,核心逻辑如下:

#!/bin/bash# 多站点批量备份 + 上传COSDATE=$(date +%Y%m%d_%H%M)BACKUP_ROOT="/data/backups/${DATE}"COS_BUCKET="cos://my-backups-1234567890"RETENTION_DAYS=7# 站点配置:域名=数据库名declare -A SITESSITES=(["site1.com"]="db_site1"["site2.com"]="db_site2"["site3.com"]="db_site3")mkdir -p "${BACKUP_ROOT}"for domain in "${!SITES[@]}"; dodb="${SITES[$domain]}"# 导出数据库mysqldump -u backup_user -p'password' \--single-transaction --quick "$db" \| gzip > "${BACKUP_ROOT}/${domain}_db.sql.gz"# 打包网站文件(排除缓存)tar --exclude='cache' --exclude='tmp' \-czf "${BACKUP_ROOT}/${domain}_files.tar.gz" \-C /www/wwwroot "$domain"# 上传到COS/usr/local/bin/coscli cp \"${BACKUP_ROOT}/${domain}_db.sql.gz" \"${COS_BUCKET}/${DATE}/${domain}_db.sql.gz"/usr/local/bin/coscli cp \"${BACKUP_ROOT}/${domain}_files.tar.gz" \"${COS_BUCKET}/${DATE}/${domain}_files.tar.gz"echo "[$(date)] ${domain} 备份完成"done# 清理COS上超过保留天数的备份/usr/local/bin/coscli rm "${COS_BUCKET}/" \--older-than "${RETENTION_DAYS}d"echo "[$(date)] 全部站点备份完成"

把这个脚本放到crontab里:

2 - 网站批量备份自动化零成本方案:15个WordPress站加8个静态页面站靠一个不到80行的Shell脚本加宝塔计划任务每天凌晨3点自动打包上传到腾讯云COS运行半年经历一次硬盘故障两小时全部恢复 - UC建站系统

0 3 * * * /data/scripts/backup_all_sites.sh >> /var/log/backup.log 2>&1

每天凌晨3点自动执行,日志写入文件方便排查。

5. Restic / Duplicati(开源专业备份工具)

Shell脚本方案灵活但需要自己处理去重、增量、加密、校验这些问题。如果不想自己写,可以上专业的开源备份工具。

· Restic:命令行工具,支持增量备份、去重、AES-256加密、快照管理。后端支持本地、SFTP、S3/COS/OSS、Backblaze B2等几十种存储。一条命令搞定备份:restic -r s3:cos.ap-guangzhou.myqcloud.com/bucket backup /www/wwwroot

· Duplicati:有Web管理界面的开源备份工具,支持定时任务、加密、压缩、增量备份。同样是后端支持S3/COS等云存储。适合不太熟悉命令行的用户

这两个工具的共同优势是增量备份:第一次跑全量,之后每次只上传变化的部分,大大减少了存储空间和上传时间。以23个站为例,全量约8.6GB,增量通常只有几百MB。

6. UpdraftPlus(WordPress站专用,最简单)

如果只有WordPress站点,UpdraftPlus是目前生态最成熟的备份插件。免费版支持:

· 定时自动备份(每天/每周/每月)
· 备份到Google Drive、Dropbox、S3等多个远程存储
· 数据库和文件分开备份
· 一键恢复

付费版(约$70/年)多了增量备份、多站点支持、更多存储后端。对于10个以内的WordPress站点,一个免费版装到每个站上,各自配置定时任务和远程存储,完全够用。

UpdraftPlus的隐藏功能:它可以把备份文件直接上传到你的S3兼容存储(包括腾讯云COS、阿里云OSS),配置路径在 设置 → UpdraftPlus Backups → 设置 → 选择"S3 Compatible (Generic)",填好Endpoint、Bucket和密钥就行。这样每个站的备份自动落到对象存储,不占服务器空间。

四、六种方案怎么选:一张表说清楚

方案适合站点数技术门槛异地备份月均成本一句话评价
宝塔面板批量操作3~20个★☆☆☆☆需额外配置免费上手最快,但不异地等于白备
宝塔+对象存储3~50个★★☆☆☆✅ 支持¥5~20/月可视化操作 + 异地存储,站长首选
MainWP/ManageWP5~100个(WP)★★☆☆☆取决于插件免费~$15/月纯WordPress站群的最佳方案
Shell脚本+crontab不限★★★☆☆自行对接¥5~30/月灵活度天花板,适合有Linux基础的
Restic/Duplicati不限★★★☆☆✅ 原生支持免费(工具)+存储费增量去重加密一条龙,专业首选
UpdraftPlus1~20个(WP)★☆☆☆☆✅ 支持免费~$70/年WordPress单站备份的不二之选

五、批量备份最容易踩的四个坑

只备文件不备数据库

这个错误我见过不止一次。tar打包了整个wwwroot目录,心想"全站都备了",结果恢复的时候发现文章、用户、设置全部丢失——因为数据库不在wwwroot目录里,它存在MySQL的数据目录里。

数据库和文件是两套独立的备份流程,缺一不可。批量脚本里必须同时包含mysqldump(或pg_dump)和tar两个步骤。宁可多写两行代码,也别等恢复的时候才发现数据是空的。

备份文件放在源服务器上

把备份文件放在/www/backup/目录下,服务器硬盘坏了、机房断电了、被勒索病毒加密了——备份和源数据一起完蛋。备份文件必须有至少一份离机副本,不管是对象存储、网盘还是另一台服务器。

⚠ 3-2-1备份原则

至少保留3份数据副本(1份源数据+2份备份),使用2种不同的存储介质(如本地磁盘+对象存储),其中1份放在异地(不在同一机房、不在同一城市)。这应该作为所有备份方案的底线标准。

只备份不验证

备份文件每天都在生成、每天都在上传,看起来一切正常。三个月后服务器挂了,信心满满去恢复——发现备份文件损坏了、解压报错了。

脚本里加一个验证环节:备份完成后,随机抽取一个站点的备份文件,尝试解压并检查数据库文件是否完整可导入。或者在每月做一次全量恢复演练——把某个月的备份拉到一台测试服务器上完整恢复一遍。这花不了多少时间,但能在灾难真正发生前发现问题。

备份频率一刀切

所有站点每天全量备份,听起来很稳妥。但如果一个站有20GB的上传图片,每天全量打包,一个月就是600GB的流量和存储。实际上图片文件几乎不变,不需要每天全量。

更合理的做法是分层备份:数据库每天全量(几十MB到几百MB,成本极低);上传文件每周全量 + 每天增量(用rsync或Restic的增量功能);代码和配置每周全量或每次变更后手动备份。这样总体备份数据量可以降到原来的1/5以下。

六、一份可以直接用的备份检查清单

不管选哪种方案,上线前对着下面这个清单逐条确认:

  • 1数据库和网站文件是否都纳入了备份范围?
  • 2备份文件是否至少有一份存储在源服务器之外的介质上?
  • 3备份任务是否设为自动定时执行(crontab/计划任务)?
  • 4备份失败时是否有通知机制(邮件/企业微信/钉钉)?
  • 5是否设置了旧备份自动清理策略,避免存储空间无限增长?
  • 6最近一个月内是否做过一次完整的恢复演练?
  • 7备份文件是否加密?(对象存储上的备份建议开启加密)

七、三种典型场景的推荐组合

场景一

5个以内WordPress站,新手站长

每个站装UpdraftPlus免费版 → 配置备份到Google Drive → 设置每日自动备份 → 搞定。零成本,零代码,手机就能查看备份状态。

场景二

10~30个混合站点(WP+静态+其他CMS)

宝塔面板 + 腾讯云COS插件 + 计划任务Shell脚本 → 数据库每天全量备份到COS → 文件每周全量 + 每天rsync增量 → 成本控制在¥20/月以内。

场景三

30个以上站点,有专职运维或技术合伙人

Restic + 自定义Shell编排脚本 → 增量备份 + 去重 + AES加密 → 后端对接S3兼容存储 → crontab定时调度 → 失败自动告警。工具免费,只有存储费用。

不管选哪个组合,上线后第一件事不是等它自动跑,而是手动触发一次完整备份,然后尝试恢复一个站点。恢复成功、数据完整、网站正常打开——这才算备份方案真正就绪。没有经过恢复验证的备份,都只是心理安慰。

备份这件事,和买保险一样:平时觉得是成本,真出事的时候才觉得值。区别在于,保险赔的是钱,备份保的是你过去几个月甚至几年的内容积累。服务器可以重买,域名可以重新解析,但数据库里几万篇文章、几百万条用户数据丢了,基本上就是从头再来。

花半天时间把批量备份方案搭好,后面每天自动跑,半年都不用看一眼。这半天时间,可能是你在网站运维上性价比最高的投入。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录