网络备份策略执行时,磁盘空间快撑爆了怎么办?

上周帮朋友修电脑,他一脸懵:"明明设置了每天自动备份到NAS,怎么突然提示‘磁盘空间不足’,连微信聊天记录都同步失败了?"——这其实不是个例。很多用户以为配好备份软件就万事大吉,结果某天打开一看,备份目录占了98%的磁盘空间,系统卡顿、新备份失败、旧文件删不掉,全乱套了。

备份不是“扔进去就完事”,得会管

网络备份(比如用Syncthing、rsync推送到群晖、或者用Duplicati备份到私有云)本质是持续写入数据的过程。如果没设清理规则,旧版本备份越积越多,尤其像照片、视频、工程文件这类大体积内容,一两个月就能吃光1TB硬盘。

三步搞定磁盘空间预警+自动兜底

第一步:让系统自己喊你
以Linux服务器或NAS为例,用df配合mailcurl发通知:

#!/bin/bash
THRESHOLD=90
USAGE=$(df /backup | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
  echo "警告:/backup 分区使用率已达 ${USAGE}%!" | mail -s "【备份磁盘告警】" admin@diannao.com
fi

把这段脚本存为/usr/local/bin/check_backup_disk.sh,再加进crontab每两小时跑一次:0 */2 * * * /usr/local/bin/check_backup_disk.sh。Windows用户可用Task Scheduler调用PowerShell脚本,检测Get-PSDrive D | Select-Object Used,Free后触发弹窗或微信机器人推送。

第二步:备份策略里嵌入“自动瘦身”
别只靠手动删。Duplicati支持保留最近7天+每月1个快照;rsync可搭配--delete-before--max-size=500M跳过大文件;TimeShift(Linux桌面)默认保留3次快照,还能在设置里调成“最多保留20GB”。关键不是删得狠,而是留得巧——比如代码项目保留全部历史,而临时渲染输出目录只留最新3份。

第三步:给备份目录加个“硬隔离”
在NAS或Linux上,用mount --bind或Btrfs子卷限制备份分区大小。例如创建一个200GB的专用子卷:btrfs subvolume create /mnt/nas/backup-limited,再用btrfs qgroup limit 200G /mnt/nas/backup-limited。一旦超限,新备份直接报错,但不影响系统其他服务——总比整个NAS卡死强。

小提醒:别等报警才动手

我见过最典型的翻车现场:公司用FTP自动拉客户日志,备份目录从不清理,半年后硬盘写满,导致当天所有新日志丢失。后来改成每天凌晨3点先运行find /backup/logs -name "*.log" -mtime +7 -delete,再启动备份,稳了。备份策略执行本身不难,难的是让它“有呼吸感”——该预警时预警,该释放时释放,就像冰箱定期除霜,才能一直冷得靠谱。