插件窝 干货文章 linux计划任务打包,文件名字为当天日期

linux计划任务打包,文件名字为当天日期

backup 备份 DATE DIR 453    来源:    2025-05-11

Linux计划任务打包文件(文件名包含当天日期)

要在Linux中使用计划任务(cron)自动打包文件,并将打包后的文件名设置为当天日期,可以按照以下步骤操作:

方法一:使用tar命令和日期变量

  1. 创建一个脚本文件(例如/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 {} \;
  1. 给脚本添加执行权限:
chmod +x /opt/backup_script.sh
  1. 设置cron计划任务(每天凌晨2点执行):
crontab -e

添加以下内容:

0 2 * * * /opt/backup_script.sh

方法二:使用zip命令

如果你更喜欢使用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(星期名称)

注意事项

  1. 确保备份目录存在且有写入权限
  2. 确保tarzip命令已安装
  3. 对于大型目录,考虑使用nice命令降低优先级: bash nice -n 19 tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
  4. 考虑添加日志记录功能以便跟踪备份状态

完整示例脚本(带日志记录)

#!/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天内的备份。