dff
hjj 成年人最蠢的行为:不会拒绝,太在乎世俗和别人的看法
关于 Crontab 定时任务和 SSH 非标准端口的配置
,以下是直接可用的操作指南:
一、 配置 Crontab 定时任务
建议将脚本设为每天凌晨业务低峰期运行(例如凌晨 2:30)。
- 赋予脚本执行权限:
chmod +x /root/restic_pro_backup.sh
- 打开定时任务编辑器:
crontab -e
- 添加以下行(末尾 2>&1 确保错误消息也能写入日志):
30 2 * /root/restic_pro_backup.sh >> /var/log/restic_cron.log 2>&1
注:30 2 * 分别代表 分、时、日、月、周。
二、 处理 SSH 非 22 端口
如果你的远程服务器(SRV2/SRV3)修改了 SSH 默认端口(例如改为 2222),有两种配置方式:
- 方法 A:在脚本的远程地址中直接指定(最直接)
Restic 的 SFTP 路径支持显式指定端口,格式为 sftp:user@host:port//path:
注意端口号后的双斜杠 //
REPO_SRV2=”sftp:user@srv2_ip:2222//path/to/backup”
-
方法 B:修改本地 SSH Config(最优雅)
这是强烈推荐的做法。在源服务器的 ~/.ssh/config 文件中配置别名,这样脚本里就不需要写复杂的端口和用户名。- 编辑或创建配置:vi ~/.ssh/config
- 添加内容:
Host srv2-backup
HostName srv2_ip
User user
Port 2222
IdentityFile ~/.ssh/id_rsaHost srv3-backup
HostName srv3_ip
User user
Port 3333- 修改脚本中的远程地址:
现在地址变得非常简洁
REPO_SRV2=”sftp:srv2-backup:/path/to/backup”
REPO_SRV3=”sftp:srv3-backup:/path/to/app_backup”
三、 常见问题与避坑指南
- 环境变量缺失:Crontab 运行时的环境变量极简。如果脚本报错“找不到 restic”,请在脚本开头添加:
PATH=”/usr/local/bin:/usr/bin:/bin:$PATH”
- Known Hosts 确认:第一次手动连接远程服务器时,SSH 会询问 Are you sure you want to continue connecting (yes/no)?。必须手动执行一次并输入 yes,否则脚本在后台静默运行时会因为无法交互而挂起。
- 日志自动清理:随着时间推移,/var/log/restic_all.log 会变大。建议配合 logrotate 工具管理。
总结
你现在的方案已经实现了:本地多路径 -> 远程多目标 -> 全过程加密 -> 增量去重 -> 自动清理 -> 定时运行。
需要我为你演示一下如何模拟一个单文件误删后,从远程快照中精准找回的操作命令吗?