Crontab 定时任务

12次阅读
没有评论

dff

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

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

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

  1. 赋予脚本执行权限:

chmod +x /root/restic_pro_backup.sh

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

crontab -e

  1. 添加以下行(末尾 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”

  1. 方法 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

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

    现在地址变得非常简洁

    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”

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

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

正文完
 0