一、题目要求
二、实验环境的搭建
三、shell脚本
#!/bin/bash password=$1 dump_dir=/mnt/mysqldump # 3. 备份已经存在,该如何选择呢? DB_CHOICE(){ db=$1 echo "$db.sql已经存在,请选择: [S]kip [B]ackup [O]verwrite" read -p "请输入你的选择: " choice case $choice in s|S) ;; b|B) # 先把原先备份的文件,重命名westos.sql---> westos_backup.sql # 再重新备份 mv /mnt/mysqldump/$db.sql /mnt/mysqldump/$db_backup.sql mysqldump -uroot -p$password $db > /mnt/mysqldump/$db.sql echo "备份源文件/mnt/mysqldump/$db.sql成功" ;; o|O) mysqldump -uroot -p$password $db > /mnt/mysqldump/$db.sql echo "备份源文件/mnt/mysqldump/$db.sql成功" ;; *) echo "请输入正确的选择" ;; esac } # 1. 判断/mnt/mysqldump目录是否存在并且是否为目录 echo "--------------------1. 检测备份目录-----------------------------" if [ -e $dump_dir ];then if [ ! -d $dump_dir ];then rm -fr $dump_dir mkdir $dump_dir echo "目录$dump_dir创建成功" fi else echo "目录$dump_dir不存在,正在创建中......" mkdir $dump_dir echo "目录$dump_dir创建成功" fi # 2. 获取数据库中所有的数据库名称并通过for循环进行批量备份 # westos, mysql echo "2. -----------------------加载数据库并备份--------------------------------" dbs=`mysql -uroot -p$password -e "show databases;" | grep -E "Database|schema$" -v` for db in $dbs do # 检测备份的文件是否存在, 如果存在,询问用户的需求(O, S, ....) if [ -e /mnt/mysqldump/$db.sql ];then DB_CHOICE $db else mysqldump -uroot -p$password $db > /mnt/mysqldump/$db.sql fi done