Linux中使用计划任务和tar命令实现文件备份
1. 创建备份脚本
首先编写一个备份脚本 backup.sh
,使用tar命令打包文件:
#!/bin/bash
# 定义备份目录和文件名格式
BACKUP_DIR="/path/to/backup/folder"
SOURCE_DIR="/path/to/source/folder"
DATE=$(date +%Y%m%d)
FILENAME="backup_$DATE.tar.gz"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 执行备份
tar -czf $BACKUP_DIR/$FILENAME $SOURCE_DIR
# 删除7天前的旧备份
find $BACKUP_DIR -type f -name "backup_*.tar.gz" -mtime +7 -delete
参数说明:
-czf
:创建gzip压缩的tar文件-mtime +7
:查找7天前的文件-delete
:删除匹配的文件
2. 设置脚本权限
chmod +x backup.sh
3. 配置计划任务(使用crontab)
- 编辑当前用户的crontab:
crontab -e
- 添加以下行(示例为每天凌晨2点执行):
0 2 * * * /path/to/backup.sh
cron时间格式说明:
* * * * *
| | | | |
| | | | +---- 星期几 (0-7) 0和7都表示周日
| | | +------ 月份 (1-12)
| | +-------- 日期 (1-31)
| +---------- 小时 (0-23)
+------------ 分钟 (0-59)
4. 验证配置
- 查看当前计划任务:
crontab -l
- 测试脚本执行:
./backup.sh
5. 高级选项
- 增量备份(使用tar的增量标志):
tar -g /path/to/snapshot.file -czf backup.tar.gz /source
- 备份验证(添加校验步骤):
tar -tf $BACKUP_DIR/$FILENAME > /dev/null && echo "备份验证成功"
- 邮件通知(添加邮件提醒):
echo "备份完成:$FILENAME" | mail -s "备份报告" user@example.com
注意事项
- 确保脚本中的路径存在且具有读写权限
- 使用绝对路径避免cron执行错误
- 测试备份文件是否可正常解压:
tar -tzf /path/to/backup.tar.gz
- 监控磁盘空间,避免备份占满磁盘
此方案通过Linux内置的cron服务实现定时任务,配合tar命令完成高效的文件备份,适合日常自动化运维场景。