### 一、Linux备份目录的小脚本
- 备份压缩不包含路径
- 保留最后的5次备份
- 脚本backup_docker.sh
#!/bin/bash
# 设置源目录和目标目录(建议不使用中文路径,避免兼容性问题)
SOURCE_DIR="/root/docker"
DEST_DIR="/root/esxi_backup" # 改为无中文,建议使用英文路径
# 获取当前时间戳
DATE=$(date +%Y%m%d%H%M)
# 判断源目录是否存在
if [ ! -d "$SOURCE_DIR" ]; then
echo "错误:源目录 $SOURCE_DIR 不存在!" >&2
exit 1
fi
# 创建目标目录(如果不存在)
mkdir -p "$DEST_DIR"
# 压缩源目录内容(不保留上层路径)
BACKUP_FILE="${DEST_DIR}/backup_${DATE}.tar.gz"
tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" .
# 切换到备份目录,清理旧备份
cd "$DEST_DIR" || exit 1
BACKUPS=($(ls -t backup_*.tar.gz)) # 最新的排在最前
# 如果备份数量超过5,删除最旧的多余备份
while [ ${#BACKUPS[@]} -gt 5 ]; do
LAST_INDEX=$((${#BACKUPS[@]} - 1))
OLD_BACKUP="${BACKUPS[$LAST_INDEX]}"
echo "删除旧备份:$OLD_BACKUP"
rm -f "$OLD_BACKUP"
unset BACKUPS[$LAST_INDEX]
done
echo "✅ 备份完成:$BACKUP_FILE"
二、设置定时任务
- 本在每周三 9 点自动执行
(crontab -l; echo "0 9 * * 3 /root/backup_docker.sh >> /var/log/backup_cron.log 2>&1") | crontab -三、其他
🔧 crontab 命令格式:
* * * * * command格式从左到右依次是:
| 字段序号 | 含义 | 范围 |
|---|---|---|
| 第1位 | 分钟(min) | 0–59 |
| 第2位 | 小时(hour) | 0–23 |
| 第3位 | 日(day) | 1–31 |
| 第4位 | 月(month) | 1–12 |
| 第5位 | 星期(week) | 0–7(0 和 7 都代表星期日) |
| 第6位 | 要执行的命令(command) |
✅ 常用符号说明:
| 符号 | 含义 |
|---|---|
* | 任意值(每分钟、每天等) |
, | 列表(如1,3,5 表示星期一、三、五) |
- | 范围(如1-5 表示星期一到星期五) |
/ | 步长(如*/5 表示每5分钟) |








