麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

Shell腳本自動備份MySQL到FTP并定期清理過期備份

2020-07-27 19:10:58
字體:
來源:轉載
供稿:網友

以前公司用的一個網上找的MySQL自動備份到FTP的Shell腳本,一直用著不錯。但是問題就是隨著備份文件的越來越多,不得不定期清理FTP上的老備份文件,十分的不便。

實際上MySQL備份無需保留太長時間的,如果能有自動清理舊的備份文件的功能就好了。不過網上找了一下,雖然也有這方面的腳本,不過可能不太符合我的需求吧。于是只能自己手動改下以前的那個Shell腳本來實現咯。

首先我們要確定保留備份的時間,我覺得一個月的備份保留就足夠了。因為基本不會出現1個月后要恢復1個月之前備份的情況。(如果有請自己手動備份,畢竟自動備份還是不能取代手動備份的部分)。那么我們的思路就出來了:在上傳以當天日期為文件名的備份的時候,順便刪除下一個月之前的同日期備份,就可以確保服務器上保留的是最近一個月的備份了。

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

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

復制代碼 代碼如下:

date +%Y-%m-%d

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

復制代碼 代碼如下:

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

怎么樣?簡單吧。實際備份的時候,因為之前腳本使用的是“m-d-Y”的形式,也就是“月-日-年”的形式,所以我稍微做了下調整。但是下面這個Shell腳本中的是按照“年-月-日”來產生文件名的。

于是,給出整個備份Shell腳本,需要的朋友只需要填寫下有中文說明的部分,即可在自己的Linux服務器上使用。使用辦法:復制到某個目錄下,然后給予執行權限,再在cron中設置每天指定時間運行即可。(關于這部分,請自行查找相關說明,這里不再復述)

帶自動清理功能的MySQL備份到FTP的Shell腳本如下:

復制代碼 代碼如下:

#!/bin/bash
 
MyUSER="db_username"     # 數據庫用戶名,建議使用root賬戶或者擁有全局權限的用戶名
MyPASS="db_password"       # 數據庫密碼
MyHOST="localhost"          # 數據庫服務器
 
# 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)"
 
# 數據庫備份的路徑
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服務器的域名或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腳本運行后,可以得到每個MySQL庫的獨立備份文件,且以gz格式壓縮以便節省空間。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精选电影免费在线观看 | 一级一级一级毛片 | 久久精品中文字幕一区二区 | 欧洲精品久久久久69精品 | 黄网站在线播放视频免费观看 | 一本色道久久综合狠狠躁篇适合什么人看 | 久久男 | 国产精品一区二区三区在线 | 操你啦免费视频 | 黄色免费在线网站 | 欧美18一19sex性护士农村 | 99ri在线| 久久综合婷婷 | 成人区精品一区二区婷婷 | 亚洲国产一区二区三区 | 91精选视频在线观看 | 国产一区亚洲 | 91,视频免费看 | 一区二区免费看 | 欧美日韩亚洲国产精品 | 亚洲第一成人在线视频 | 成人一级在线 | 黄色免费高清网站 | 中国美女一级黄色大片 | 国产一区免费视频 | 911精品影院在线观看 | 久久人人爽人人爽人人片av高清 | 午夜电影视频 | 久久久aa| 99亚洲伊人久久精品影院红桃 | 久久国产免费 | 免费看成年人网站 | 国产亚洲精品成人a | 欧美性色黄大片www 操碰网 | 国产亚洲精品综合一区91555 | 成人在线视频免费播放 | 免费国产视频大全入口 | av在线影片 | 国内成人自拍视频 | 91久久久久久久一区二区 | 19禁国产精品福利视频 |