Auto-sync: wiki-ingest 3 sources (2026-04-16)
This commit is contained in:
83
wiki/sources/Ubuntu服务器通过rsync实现日常增量备份.md
Normal file
83
wiki/sources/Ubuntu服务器通过rsync实现日常增量备份.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: "Ubuntu服务器通过rsync实现日常增量备份"
|
||||
type: source
|
||||
tags: [ubuntu, rsync, backup, nas, nfs, fstab]
|
||||
date: 2026-04-15
|
||||
---
|
||||
|
||||
## Source File
|
||||
- [[raw/Home Office/Ubuntu服务器通过rsync实现日常增量备份.md]]
|
||||
|
||||
## Summary
|
||||
- 核心主题:Ubuntu 服务器通过 rsync 实现对 NAS 的每日增量备份自动化
|
||||
- 问题域:已有机房镜像备份(Clonezilla),需补充实时增量数据保护方案
|
||||
- 方法/机制:rsync -azR --delete 差异同步,lockfile 防重入,crontab 凌晨自动执行,/etc/fstab 实现 NFS 永久挂载
|
||||
- 结论/价值:构建"时间点恢复"能力,NAS 掉线时自动中止备份防止本地硬盘爆满
|
||||
|
||||
## Key Claims
|
||||
- rsync 在备份正在写入的二进制文件(如 MySQL)时可能导致恢复后无法启动,应先用 mysqldump 导出 SQL 再同步
|
||||
- rsync 返回码 23/24 在备份运行中系统时属于正常(部分文件权限问题或源文件消失),重点检查数据是否大部分已同步
|
||||
- /etc/fstab 中 _netdev 参数确保网络设备就绪后再执行挂载,防止开机因网络未就绪而挂载失败
|
||||
- lockfile 机制防止 rsync_backup.sh 重入,脚本开头检查 lockfile 存在则跳过本次执行
|
||||
|
||||
## Key Quotes
|
||||
> "rsync -azR --delete — -a 归档模式保留权限属性,-z 压缩传输,-R 相对路径,--delete 删除目标端多余文件" — rsync 核心参数解析
|
||||
> "0 3 * * * /usr/local/bin/rsync_backup.sh — 每天凌晨 3 点业务低峰期执行备份" — Crontab 时间配置
|
||||
> "192.168.3.17:/volume2/backup /mnt/nas_backup nfs defaults,timeo=900,retrans=5,_netdev 0 0" — NFS /etc/fstab 永久挂载条目
|
||||
> "timeo=900(90秒超时),retrans=5(重连5次),_netdev(等待网络就绪)" — NFS 挂载参数详解
|
||||
|
||||
## Key Concepts
|
||||
- [[rsync]]:远程增量同步工具,通过 Delta-transfer 算法只传输变化部分
|
||||
- [[增量备份]]:仅备份自上次备份以来变化的文件,相比全量备份节省存储和带宽
|
||||
- [[NFS永久挂载]]:通过 /etc/fstab 将 NFS 挂载配置为系统启动时自动执行
|
||||
- [[lockfile]]:防止脚本重入的简单机制,PID 文件 + kill -0 检测进程存活
|
||||
- [[Crontab]]:Linux 定时任务调度器,支持分钟级精确控制
|
||||
- [[Clonezilla]]:磁盘镜像备份工具,与 rsync 形成"整机镜像 + 增量数据"二级保护
|
||||
- [[mysqldump]]:MySQL/MariaDB 逻辑备份工具,在 rsync 之前先导出 SQL 文件保证数据库一致性
|
||||
|
||||
## Key Entities
|
||||
- [[Synology NAS]]:备份目标端(192.168.3.17:/volume2/backup)
|
||||
- [[Ubuntu服务器]]:备份源端,运行 rsync_backup.sh
|
||||
- [[Docker]]:数据来源之一(/var/lib/docker/volumes/、/etc/docker/、/home/shenwei/Docker/)
|
||||
|
||||
## Connections
|
||||
- [[Ubuntu服务器通过rsync实现日常增量备份]] → backups_to → [[Synology NAS]]
|
||||
- [[Ubuntu服务器通过rsync实现日常增量备份]] ← runs_on ← [[Ubuntu服务器]]
|
||||
- [[Docker]] ← source_data ← [[Ubuntu服务器通过rsync实现日常增量备份]]
|
||||
|
||||
## 备份策略矩阵
|
||||
|
||||
| 备份类型 | 工具 | 频率 | 覆盖范围 | 恢复时间 |
|
||||
|---------|------|------|---------|---------|
|
||||
| 整机镜像 | Clonezilla | 按需/周 | 全盘扇区级 | 长(全盘还原) |
|
||||
| 增量数据 | rsync | 每日凌晨3点 | 变化文件 | 短(选择性还原) |
|
||||
|
||||
## 关键脚本:rsync_backup.sh 防重入逻辑
|
||||
```bash
|
||||
LOCKFILE="/tmp/rsync_backup.lock"
|
||||
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
|
||||
echo "备份任务已在运行中,跳过本次执行。"
|
||||
exit
|
||||
fi
|
||||
echo $$ > ${LOCKFILE}
|
||||
trap "rm -f ${LOCKFILE}" EXIT
|
||||
```
|
||||
|
||||
## NFS 永久挂载验证流程
|
||||
```bash
|
||||
# 1. 卸载当前挂载
|
||||
sudo umount /mnt/nas_backup
|
||||
# 2. 模拟开机自动挂载
|
||||
sudo mount -a
|
||||
# 3. 验证挂载成功
|
||||
df -h | grep nas_backup
|
||||
```
|
||||
|
||||
## Contradictions
|
||||
|
||||
## 常见问题排查
|
||||
| 问题 | 原因 | 解决方案 |
|
||||
|------|------|---------|
|
||||
| 重启后挂载失效 | nfs-common 启动慢于 mount -a | systemctl enable remote-fs.target |
|
||||
| rsync 返回码 20 | 进程被手动中断(SIGINT/SIGTERM) | 使用 nohup 或 screen 后台运行 |
|
||||
| 备份写满本地硬盘 | NAS 掉线时挂载点变成普通目录 | 脚本开头加 mountpoint -q 检查 |
|
||||
Reference in New Issue
Block a user