shell編程-mysql數據庫全備份-which命令-$RANDOM隨機數-while從文件讀取數據

  • which命令:
    -https://www.cnblogs.com/huchong/p/9938426.html

在這裏插入圖片描述
https://www.cnblogs.com/300js/p/9133352.html
關於$RANDOM
https://www.cnblogs.com/gaoyuechen/p/8000810.html
在這裏插入圖片描述

shell腳本中怎麼用從文件中逐行的讀取數據

while read line #使用read命令循環讀取文件內容,並將讀取的文件內容賦值給變量line
do
let count++(count是你自己定義的變量)
echo "$count line&quot;done&lt;line&quot; done &lt;file #“done <filewhilefile”將整個while循環的標準輸入指向文件file

shell腳本中如何寫文件(覆蓋,追加等等)

https://www.cnblogs.com/xiaojianblogs/p/6486902.html

文件備份腳本


# File Name: mysqldb.sh
# Author: Finley
# mail: [email protected]
# Create Time: Tue 20 Aug 2019 09:02:07 PM CST
#====================================================================================
#!/bin/bash
MYSQL=`which mysql`
MYSQLDUMP=`which mysqldump`
User=root
Pass=Finley
Backup_path=/data/backup
Base_path=/data/tmp
tmp_file=$Base_path/$RANDOM

#Create directory and file
if [ ! -d $Base_path ]
        then
        mkdir $Base_path
fi
if [ ! -d $Backup_path ]
        then
        mkdir $Backup_path
fi
touch $tmp_file
$MYSQL -u$User -p$Pass <<EOF >$tmp_file
show databases;
EOF

#search databases would be backup
exclude=("Database","information_schema","performance_schema","sys"."mysql")
declare -a databaselist
declare -i i=0

while read line 
do
        if [[ "${exclude[@]}" != *$line* ]]
        then
           let i++;
           databaselist[$i]=$line
        fi
done < $tmp_file
echo "將要備份的數據庫爲:${databaselist[@]}"

filename=`date +%F`
rd=$RANDOM
for name  in ${databaselist[@]}
        do
                file_path=$Backup_path/`date +%F`
                if [ ! -e $file_path ]
                    then
                       mkdir $file_path
                fi
                file="$file_path$name-$filename-$rd.gz"
                $MYSQLDUMP --opt $name -u$User -p$Pass | gzip > $file
        done
                                                                     56,1-8 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章