关于Shell编程的综合案例
1 数据库自动备份
- (1)脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 备份基础路径
BACKUP_BASE_DIR=/home/letere/shell_learn/sample/data/backup
# 备份日期(文件夹命名)
BACKUP_TIME=$(date "+%Y-%m-%d")
# mysql数据库相关信息
HOST=localhost
USERNAME=root
PASSWORD=123456
DATABASE=nacos_config
echo "===== 备份开始 - $(date "+%H:%M:%S") ======"
# 备份路径
BACKUP_DIR=${BACKUP_BASE_DIR}/${BACKUP_TIME}
# 判断文件目录是否存在,不存在则创建目录
if [ ! -e ${BACKUP_DIR} ]
then
mkdir -p ${BACKUP_DIR}
fi
# 登录mysql,导出数据文件为.sql,压缩到文件目录中
# 根据实际情况,用for循环备份多个数据库
mysqldump -u${USERNAME} -p${PASSWORD} --host=${HOST} ${DATABASE} | gzip > ${BACKUP_DIR}/${DATABASE}.sql.gz
# 对当前日期的文件进行压缩
tar -zcvPf ${BACKUP_DIR}.tar.gz ${BACKUP_DIR}
# 删除缓存文件
rm -rf ${BACKUP_DIR}
# 删除10天前的数据
find ${BACKUP_BASE_DIR} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "===== 备份结束 - $(date "+%H:%M:%S") ====="
- (2)演示