Crontab 定时任务

150次阅读
没有评论
内容纲要

# dff
hjj 成年人最蠢的行为:不会拒绝,太在乎世俗和别人的看法

## 关于 Crontab 定时任务和 SSH 非标准端口的配置

,以下是直接可用的操作指南:
一、 配置 Crontab 定时任务
建议将脚本设为每天凌晨业务低峰期运行(例如凌晨 2:30)。

1. 赋予脚本执行权限:

chmod +x /root/restic_pro_backup.sh

2. 打开定时任务编辑器:

crontab -e

3. 添加以下行(末尾 2>&1 确保错误消息也能写入日志):

30 2 * * * /root/restic_pro_backup.sh >> /var/log/restic_cron.log 2>&1

注:30 2 * * * 分别代表 分、时、日、月、周。

------------------------------
二、 处理 SSH 非 22 端口
如果你的远程服务器(SRV2/SRV3)修改了 SSH 默认端口(例如改为 2222),有两种配置方式:
1. 方法 A:在脚本的远程地址中直接指定(最直接)
Restic 的 SFTP 路径支持显式指定端口,格式为 sftp:user@host:port//path:

# 注意端口号后的双斜杠 //
REPO_SRV2="sftp:user@srv2_ip:2222//path/to/backup"

2. 方法 B:修改本地 SSH Config(最优雅)
这是强烈推荐的做法。在源服务器的 ~/.ssh/config 文件中配置别名,这样脚本里就不需要写复杂的端口和用户名。

1. 编辑或创建配置:vi ~/.ssh/config
2. 添加内容:

Host srv2-backup
HostName srv2_ip
User user
Port 2222
IdentityFile ~/.ssh/id_rsa

Host srv3-backup
HostName srv3_ip
User user
Port 3333

3. 修改脚本中的远程地址:

# 现在地址变得非常简洁
REPO_SRV2="sftp:srv2-backup:/path/to/backup"
REPO_SRV3="sftp:srv3-backup:/path/to/app_backup"

------------------------------
三、 常见问题与避坑指南

1. 环境变量缺失:Crontab 运行时的环境变量极简。如果脚本报错“找不到 restic”,请在脚本开头添加:

PATH="/usr/local/bin:/usr/bin:/bin:$PATH"

2. Known Hosts 确认:第一次手动连接远程服务器时,SSH 会询问 Are you sure you want to continue connecting (yes/no)?。必须手动执行一次并输入 yes,否则脚本在后台静默运行时会因为无法交互而挂起。
3. 日志自动清理:随着时间推移,/var/log/restic_all.log 会变大。建议配合 logrotate 工具管理。

总结
你现在的方案已经实现了:本地多路径 -> 远程多目标 -> 全过程加密 -> 增量去重 -> 自动清理 -> 定时运行。
需要我为你演示一下如何模拟一个单文件误删后,从远程快照中精准找回的操作命令吗?

正文完
 0