最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本自動(dòng)備份MySQL到FTP并定期清理過(guò)期備份

 更新時(shí)間:2014年12月22日 09:48:28   投稿:junjie  
這篇文章主要介紹了Shell腳本自動(dòng)備份MySQL到FTP并定期清理過(guò)期備份,本文中的腳本同時(shí)實(shí)現(xiàn)了定期清理舊備份數(shù)據(jù)的功能,這是一大特色,需要的朋友可以參考下

以前公司用的一個(gè)網(wǎng)上找的MySQL自動(dòng)備份到FTP的Shell腳本,一直用著不錯(cuò)。但是問(wèn)題就是隨著備份文件的越來(lái)越多,不得不定期清理FTP上的老備份文件,十分的不便。

實(shí)際上MySQL備份無(wú)需保留太長(zhǎng)時(shí)間的,如果能有自動(dòng)清理舊的備份文件的功能就好了。不過(guò)網(wǎng)上找了一下,雖然也有這方面的腳本,不過(guò)可能不太符合我的需求吧。于是只能自己手動(dòng)改下以前的那個(gè)Shell腳本來(lái)實(shí)現(xiàn)咯。

首先我們要確定保留備份的時(shí)間,我覺得一個(gè)月的備份保留就足夠了。因?yàn)榛静粫?huì)出現(xiàn)1個(gè)月后要恢復(fù)1個(gè)月之前備份的情況。(如果有請(qǐng)自己手動(dòng)備份,畢竟自動(dòng)備份還是不能取代手動(dòng)備份的部分)。那么我們的思路就出來(lái)了:在上傳以當(dāng)天日期為文件名的備份的時(shí)候,順便刪除下一個(gè)月之前的同日期備份,就可以確保服務(wù)器上保留的是最近一個(gè)月的備份了。

然后我們需要知道Linux下的一個(gè)命令:date。這是個(gè)可以查看當(dāng)前服務(wù)器的時(shí)間日期信息的命令。當(dāng)然這里我們需要知道的是這個(gè)命令的參數(shù),畢竟我們需要得到的是日期部分。

輸入下面這個(gè)命令,可以看到“年-月-日”的輸入,類似“2011-09-09”:

復(fù)制代碼 代碼如下:

date +%Y-%m-%d

那么,如果我們要得到1個(gè)月之前的日期怎么辦呢?使用下面的這條命令就可以得到:

復(fù)制代碼 代碼如下:

date -d last-month +%Y-%m-%d

怎么樣?簡(jiǎn)單吧。實(shí)際備份的時(shí)候,因?yàn)橹澳_本使用的是“m-d-Y”的形式,也就是“月-日-年”的形式,所以我稍微做了下調(diào)整。但是下面這個(gè)Shell腳本中的是按照“年-月-日”來(lái)產(chǎn)生文件名的。

于是,給出整個(gè)備份Shell腳本,需要的朋友只需要填寫下有中文說(shuō)明的部分,即可在自己的Linux服務(wù)器上使用。使用辦法:復(fù)制到某個(gè)目錄下,然后給予執(zhí)行權(quán)限,再在cron中設(shè)置每天指定時(shí)間運(yùn)行即可。(關(guān)于這部分,請(qǐng)自行查找相關(guān)說(shuō)明,這里不再?gòu)?fù)述)

帶自動(dòng)清理功能的MySQL備份到FTP的Shell腳本如下:

復(fù)制代碼 代碼如下:

#!/bin/bash
 
MyUSER="db_username"     # 數(shù)據(jù)庫(kù)用戶名,建議使用root賬戶或者擁有全局權(quán)限的用戶名
MyPASS="db_password"       # 數(shù)據(jù)庫(kù)密碼
MyHOST="localhost"          # 數(shù)據(jù)庫(kù)服務(wù)器
 
# Linux bin paths, change this if it can't be autodetected via which command
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
 
# 數(shù)據(jù)庫(kù)備份的路徑
DEST="/home/backup"
 
# Main directory where backup will be stored
MBD="$DEST/mysql"
 
# Get hostname
HOST="$(hostname)"
 
# Get data in dd-mm-yyyy format
NOW="$(date +%d-%m-%Y)"
OLD="$(date -d last-month +%d-%m-%Y)"
 
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
 
# DO NOT BACKUP these databases
IGGY="test"
 
rm -rf $MBD
 
[ ! -d $MBD ] && mkdir -p $MBD || :
 
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
 
# Get all database list first
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
 
cat > ftpcc.sh <<EOF
cd $MBD
ftp -i -n<<!
open blog.renhao.org #在這里填寫FTP服務(wù)器的域名或IP
user ftp_user ftp_pass #在這里填寫FTP用戶名和密碼,注意空格分隔
binary
mput *.gz
EOF
 
for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
        for i in $IGGY
        do
            [ "$db" = "$i" ] && skipdb=1 || :
        done
    fi
 
    if [ "$skipdb" = "-1" ] ; then
        FILE="$MBD/$db.$HOST.$NOW.gz"
        echo "delete $db.$HOST.$OLD.gz" >> ftpcc.sh
        # do all inone job in pipe,
        # connect to mysql using mysqldump for select mysql database
        # and pipe it out to gz file in backup dir :)
        $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
    fi
done
 
cat >> ftpcc.sh <<EOF
close
bye
!
EOF
 
sh ftpcc.sh
rm ftpcc.sh

這樣的Shell腳本運(yùn)行后,可以得到每個(gè)MySQL庫(kù)的獨(dú)立備份文件,且以gz格式壓縮以便節(jié)省空間。

相關(guān)文章

  • Shell腳本函數(shù)定義和函數(shù)參數(shù)

    Shell腳本函數(shù)定義和函數(shù)參數(shù)

    這篇文章主要介紹了Shell腳本函數(shù)定義和函數(shù)參數(shù),分別介紹了2種自定義函數(shù)的方法,以及定義帶返回值函數(shù)的方法,需要的朋友可以參考下
    2014-07-07
  • Shell之免交互的實(shí)現(xiàn)

    Shell之免交互的實(shí)現(xiàn)

    本文主要介紹了Shell之免交互的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Shell $?獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài)

    Shell $?獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài)

    這篇文章主要介紹了Shell $?獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Shell常見用法小記

    Shell常見用法小記

    本文簡(jiǎn)要介紹了下shell入門的一些用法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • linux 中的atq命令

    linux 中的atq命令

    atq命令顯示系統(tǒng)中待執(zhí)行的任務(wù)列表,也就是列出當(dāng)前用戶的at任務(wù)列表。下面通過(guò)本文給大家分享linux 中的atq命令,感興趣的朋友一起看看吧
    2017-09-09
  • shell中如何批量注釋和取消注釋

    shell中如何批量注釋和取消注釋

    這篇文章主要介紹了shell中如何批量注釋和取消注釋,幫助大家更好的理解和學(xué)習(xí)shell腳本,感興趣的朋友可以了解下
    2020-08-08
  • Shell常用操作符總結(jié)

    Shell常用操作符總結(jié)

    這篇文章主要介紹了Shell常用操作符總結(jié),本文講解了算術(shù)操作 符、關(guān)系操作符、測(cè)試操作符等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • shell腳本中$符號(hào)的命令使用匯總

    shell腳本中$符號(hào)的命令使用匯總

    這篇文章主要介紹了shell腳本中$符號(hào)的使用示例,幫助大家更好的理解和學(xué)習(xí)shell 語(yǔ)言的用法,感興趣的朋友可以了解下
    2020-11-11
  • shell性能測(cè)試腳本優(yōu)化的技巧

    shell性能測(cè)試腳本優(yōu)化的技巧

    這篇文章主要介紹了shell性能測(cè)試腳本優(yōu)化技巧,本文通過(guò)實(shí)例截圖的形式給大家展示,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Shell?腳本自動(dòng)輸入密碼的三種方式小結(jié)

    Shell?腳本自動(dòng)輸入密碼的三種方式小結(jié)

    本文主要介紹了Shell?腳本自動(dòng)輸入密碼的三種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

济阳县| 赤壁市| 梅州市| 桐梓县| 酉阳| 肥西县| 修文县| 揭阳市| 上高县| 靖江市| 称多县| 浙江省| 潮州市| 曲水县| 高淳县| 庆安县| 广河县| 大名县| 昌宁县| 集贤县| 台东市| 淮阳县| 盱眙县| 岫岩| 杨浦区| 罗城| 漠河县| 探索| 会昌县| 来宾市| 兰州市| 江华| 绵竹市| 河北区| 乌拉特后旗| 阿城市| 陆丰市| 达拉特旗| 牟定县| 江都市| 长乐市|