doc: 修改文档

这个提交包含在:
HA
2026-04-27 00:15:00 +08:00
父节点 0d103b931d
当前提交 66a3d5227e

查看文件

@@ -36,14 +36,14 @@ backup/
```bash ```bash
# 创建目录并下载脚本与示例配置 # 创建目录并下载脚本与示例配置
mkdir -p ~/backup && cd ~/backup mkdir -p /opt/backup && cd /opt/backup
curl -fsSL -o backup.sh https://git.suhang.me/suhang/scripts/raw/branch/release/backup/backup.sh curl -fsSL -o backup.sh https://git.suhang.me/suhang/scripts/raw/branch/release/backup/backup.sh
curl -fsSL -o backup.conf https://git.suhang.me/suhang/scripts/raw/branch/release/backup/backup.conf curl -fsSL -o backup.conf https://git.suhang.me/suhang/scripts/raw/branch/release/backup/backup.conf
chmod +x backup.sh chmod +x backup.sh
chmod 600 backup.conf chmod 600 backup.conf
# 编辑 backup.conf 后执行 # 编辑 backup.conf 后执行
bash backup.sh smb bash /opt/backup/backup.sh smb
``` ```
也可改用 `wget` 也可改用 `wget`
@@ -224,24 +224,52 @@ rclone lsd gdrive: # 验证可访问
```cron ```cron
# 每天 03:10 跑一次 # 每天 03:10 跑一次
10 3 * * * /bin/bash /path/to/backup/backup.sh smb > /var/log/backup.log 2>&1 10 3 * * * /bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
# 每天 03:17 跑一次 # 每天 03:17 跑一次
17 3 * * * /bin/bash /path/to/backup/backup.sh smb > /var/log/backup.log 2>&1 17 3 * * * /bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
# 每两天 03:10 跑一次按月内的奇数日触发1、3、5……29、31 # 每两天 03:10 跑一次按月内的奇数日触发1、3、5……29、31
10 3 */2 * * /bin/bash /path/to/backup/backup.sh smb > /var/log/backup.log 2>&1 10 3 */2 * * /bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
# 每 5 天 03:10 跑一次按月内日期号取模1、6、11、16、21、26、31 # 每 5 天 03:10 跑一次按月内日期号取模1、6、11、16、21、26、31
10 3 */5 * * /bin/bash /path/to/backup/backup.sh smb > /var/log/backup.log 2>&1 10 3 */5 * * /bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
``` ```
> `*/N` 是按月内日期号取模,并不是严格意义的「每 N×24 小时」。月末跨月时会出现间隔被截短的情况(例如 `*/5` 在 31 号触发后,次月 1 号又会触发);如对间隔严格要求,建议改用 systemd timer 的 `OnUnitActiveSec=5d`。 > `*/N` 是按月内日期号取模,并不是严格意义的「每 N×24 小时」。月末跨月时会出现间隔被截短的情况(例如 `*/5` 在 31 号触发后,次月 1 号又会触发);如对间隔严格要求,建议改用 systemd timer 的 `OnUnitActiveSec=5d`。
> 如果有多条任务都写到同一个日志文件,请改用不同的日志路径(例如 `/var/log/backup-0310.log`、`/var/log/backup-0317.log`),否则后一次会覆盖前一次。 > 如果有多条任务都写到同一个日志文件,请改用不同的日志路径(例如 `/opt/backup/backup-0310.log`、`/opt/backup/backup-0317.log`),否则后一次会覆盖前一次。
macOS 可用 `launchd``cron`(需要在「系统设置 → 隐私与安全性 → 完全磁盘访问权限」中授予 `cron` 权限以读取受保护目录)。 macOS 可用 `launchd``cron`(需要在「系统设置 → 隐私与安全性 → 完全磁盘访问权限」中授予 `cron` 权限以读取受保护目录)。
### 立即执行一次验证
写完 cron 后建议先手动跑一遍验证,避免等到凌晨才发现配置问题(密码、网络、目录权限等)。
**方法 A**:直接照搬 cron 那行命令在终端跑一次,看日志是否完整:
```bash
/bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
tail -n 80 /opt/backup/backup.log
```
**方法 B**:用 cron 自身的环境跑一次(更接近真实定时执行的环境,能复现 PATH / 语言区域等差异)。临时把 cron 改成「下一分钟」触发:
```bash
# 假设当前时间 21:34,把 cron 改成 21:35 跑一次
crontab -e
# 临时改成: 35 21 * * * /bin/bash /opt/backup/backup.sh smb > /opt/backup/backup.log 2>&1
# 等一分钟后:
tail -f /opt/backup/backup.log
# 验证通过后再 crontab -e 恢复成原计划(例如 10 3 * * *
```
**方法 C**最干脆debug 模式直接前台跑,进度全在终端:
```bash
bash /opt/backup/backup.sh smb --debug
```
## 远端目录结构 ## 远端目录结构
每次备份在远端创建一个独立子目录SMB 与 rclone 行为一致),内含分卷文件与 SHA256 清单: 每次备份在远端创建一个独立子目录SMB 与 rclone 行为一致),内含分卷文件与 SHA256 清单: