如何用cron实现VPS网站按月份、周次分级目录自动备份
VPS 自动按周次分级备份脚本实现方案
一、周次逻辑说明
针对你要求的当月固定4个周次目录的需求,采用最直观的日期区间划分规则,完全匹配1-4的周次编号要求:
- 当月1日~7日 → 周次1
- 当月8日~14日 → 周次2
- 当月15日~21日 → 周次3
- 当月22日至当月最后一天 → 周次4
如果需要调整为以周一/周日为起始的自然周统计规则,只需要修改周次计算部分的逻辑即可。
二、修改后的完整备份脚本
#!/bin/bash # 定义备份根目录,避免相对路径导致的存放错误 BACKUP_ROOT="/root/backups" # 取当前月份全称(如November) CUR_MONTH=$(date +%B) # 计算对应周次 CUR_DAY=$(date +%e | xargs) # 取当日日期,xargs用于去除个位数日期前的前置空格 if [ $CUR_DAY -le 7 ]; then WEEK_NUM=1 elif [ $CUR_DAY -le 14 ]; then WEEK_NUM=2 elif [ $CUR_DAY -le 21 ]; then WEEK_NUM=3 else WEEK_NUM=4 fi # 拼接目标目录完整路径,mkdir -p会自动创建不存在的各级父目录,无需单独判断目录是否存在 TARGET_DIR="${BACKUP_ROOT}/${CUR_MONTH}/${WEEK_NUM}" mkdir -p $TARGET_DIR # 移动备份文件到目标目录 mv /var/www/html/backup.tar.gz $TARGET_DIR
三、cronjob 配置方法
执行crontab -e编辑定时任务列表,添加以下规则即可实现每日执行3次备份,以下示例为每日8点、14点、20点各执行一次:
0 8,14,20 * * * /bin/bash 替换为你实际存放脚本的绝对路径.sh
操作提示:配置前需要给脚本添加执行权限,执行命令chmod +x 替换为你实际存放脚本的绝对路径.sh即可
内容的提问来源于stack exchange,提问作者benyo
相关产品推荐
相关产品推荐

