要在Linux中使用计划任务(cron)自动打包文件,并将打包后的文件名设置为当天日期,可以按照以下步骤操作:
/opt/backup_script.sh
):#!/bin/bash
# 定义备份目录和输出目录
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backups"
# 创建以当前日期命名的tar.gz文件
DATE=$(date +%Y-%m-%d)
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
# 可选:删除超过30天的旧备份
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +30 -exec rm {} \;
chmod +x /opt/backup_script.sh
crontab -e
添加以下内容:
0 2 * * * /opt/backup_script.sh
如果你更喜欢使用zip格式,可以修改脚本如下:
#!/bin/bash
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backups"
DATE=$(date +%Y-%m-%d)
zip -r "$BACKUP_DIR/backup_$DATE.zip" "$SOURCE_DIR"
你可以根据需要调整日期格式:
- date +%Y%m%d
→ 20231231(无连字符)
- date +%Y-%m-%d-%H%M
→ 2023-12-31-2359(包含时间)
- date +%A
→ Monday(星期名称)
tar
或zip
命令已安装nice
命令降低优先级:
bash
nice -n 19 tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
#!/bin/bash
# 配置变量
SOURCE_DIR="/var/www/html"
BACKUP_DIR="/backups/web"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y-%m-%d)
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 记录开始时间
echo "[$(date)] 开始备份 $SOURCE_DIR" >> "$LOG_FILE"
# 执行备份
if tar -czf "$BACKUP_DIR/web_backup_$DATE.tar.gz" "$SOURCE_DIR"; then
echo "[$(date)] 备份成功: $BACKUP_DIR/web_backup_$DATE.tar.gz" >> "$LOG_FILE"
else
echo "[$(date)] 备份失败!" >> "$LOG_FILE"
exit 1
fi
# 清理30天前的旧备份
find "$BACKUP_DIR" -name "web_backup_*.tar.gz" -mtime +30 -exec rm {} \;
echo "[$(date)] 已清理30天前的旧备份" >> "$LOG_FILE"
这样设置后,系统将每天自动创建带有日期的备份文件,并保留30天内的备份。