请用 Bash 语言编写一个能够按照预定计划自动执行备份任务的脚本,并说明其实现方式。
考察说明
考察候选人使用 Bash 编写定时任务脚本的能力,包括脚本结构、调度和备份策略。
回答思路
- 【回答框架 1】脚本应包含备份源路径、目标路径、日志记录和错误处理。可使用 tar 命令打包压缩,并设置文件名包含时间戳以区分不同版本的备份。
- 【回答框架 2】调度可通过 crontab 实现,在脚本中说明如何添加定时任务,例如每天凌晨 2 点执行,需在 crontab 文件中写入条目。
- 【回答框架 3】需考虑备份的完整性,可先检查源目录是否存在,若不存在则放弃备份并记录错误。备份完成后可校验生成的备份文件大小或解压测试确保可用。
- 【回答框架 4】脚本应支持参数化,例如通过命令行参数传入源目录和目标目录,提高通用性和可维护性。
- 【关键点 1】使用 tar 结合时间戳生成唯一备份文件,如 backup_$(date +%Y%m%d_%H%M%S).tar.gz
- 【关键点 2】通过 crontab 添加定时任务,如 0 2 * * * /path/to/script.sh
- 【关键点 3】脚本开头设置 set -euo pipefail 增强健壮性,并检查必要命令是否存在
- 【易错点 1】定时任务执行环境可能缺少绝对路径,需在脚本中使用绝对路径或设置 PATH
- 【易错点 2】在脚本中直接使用相对路径导致找不到文件,应基于脚本所在目录定位资源
- 【易错点 3】忽略错误处理,如备份失败后无日志记录,难以排查