標籤:天前 result false 沒有 today l資料庫 地址 grep 輸入資料
#!/bin/sh#mysql地址#檢測使用者是否手動輸入了密碼mysql_host=""#mysql使用者mysql_user=""#mysql密碼mysql_password=""#mysql資料庫名#如果不填寫需要匯出的資料庫名稱提示錯誤資訊並終止執行,注意[]裡面兩邊必須有空格if [ ! -n "$1" ];then echo "您沒有輸入資料庫名稱" echo "格式:xxx.sh 資料庫名稱" exitfimysql_name="$1"#mysql安裝路徑mysql_path="/usr/bin/"#備份檔案存放路徑bak_path="/root/shell/mysqlBak/${mysql_name}"#刪除到期資料 true代表是 false代表否delete_overdue_data="true"#刪除多少天前資料 預設30天delete_overdue_data_days=30#檢測目錄是否存在,如果不存在自動建立目錄if [ ! -x "${bak_path}" ];then mkdir "${mysql_name}" chmod 755 "${bak_path}"fi#備份時間bak_date=`date +%F`${mysql_path}/mysqldump --opt -u${mysql_user} -p${mysql_password} -h${mysql_host} ${mysql_name} | gzip > ${bak_path}/${bak_date}.sql.gz#檢測是否刪除到期資料if [ "${delete_overdue_data}" != "true" ];then echo "備份資料完成..." exitfi#刪除到期備份資料#擷取今天日期the_date_today=`date +%Y%m%d`#擷取要刪除的檔案find_date_file=`date -d "${the_date_today} ${delete_overdue_data_days} days ago" "+%Y-%m-%d"`#進入指定目錄cd ${bak_path}#尋找要刪除的資料ls -l|grep ${find_date_file}#取得尋找結果0不存在 1存在result=$?echo ${result}if [ ${result} == 0 ];then echo "刪除到期資料" `rm -f ${find_date_file}.*`
使用shell自動備份資料庫