首頁 / 精華文章 / 粉好用ㄟ自動備份資料庫、網站到信箱、FTP的腳本
Logo

粉好用ㄟ自動備份資料庫、網站到信箱、FTP的腳本

有人找我要備份腳本,我就只好丟出我的啦! 在這邊先感謝貓言貓語的作者~ 我是參考他寫的自動備份網站文件和數據庫上傳到FTP空間再另外修改成用WinRAR來壓縮的方式做備份,因為一般普通人比較認識WinRAR,而且我之前寫的只適用區網。 😝
用VPS的人一樣可以參考這個檔案,只要建立好備份檔位置以及腳本加權限就可以了。
*********更新歷史*********
2010/10/01 – 首次發表
2010/10/09 – 因為有人搞不懂怎用在cPanel上面,而且要簡單易懂… 🖕 還好看到貓有寫新的文章,不然真想揍人。總之 🖕 08回來沒吃到西堤你丟災 👿 👿 👿
2010/10/25 – 添加自動修復資料庫語法
2014/08/27 – 修改信件寄出語法
腳本來了~ 🖕 登入FTP後先在public_html目錄底下建立一個備份用的資料夾mkd /public_html/backup,然後在backup資料夾底下建立腳本WebDBtoFTP.sh,內容如下

#!/bin/bash
############### 你要修改的地方從這裡開始 ###############
MYSQL_PATH=mysql                   # MySQL程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQLDUMP=mysqldump                # MySQLDUMP程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQLCHECK=mysqlcheck              # MySQLCHECK程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQL_USER=root                    # MySQL用戶名
MYSQL_PASS=MySQL密碼               # MySQL密碼
MAIL_TO=qoo@gmail.com              # 資料庫發送到的郵箱
HOSTNAME=qoo.com                   # 主機名稱
FTP_IP=ftp.hotfile.com             # FTP地址
FTP_USER=FTP用戶名                 # FTP用戶名
FTP_PASS=FTP密碼                   # FTP密碼
FTP_BACKUP=backup                  # FTP上存放備份檔案的資料夾
BACKUP_DIR=/public_html/backup     # 備份檔位置
WEB_DATA=/public_html/qoo.com      # 要備份的網站位置
############### 你要修改的地方從這裡結束 ###############
#定義資料庫的名字和舊資料庫的名字
DBName=$HOSTNAME-DB_$(date +"%Y%m%d").tar.gz
OldDB=$HOSTNAME-DB_$(date -d -5day +"%Y%m%d").tar.gz
#定義網站資料的名字和舊網站資料的名字
WebName=$HOSTNAME-Web_$(date +%Y%m%d).tar.gz
OldWeb=$HOSTNAME-Web_$(date -d -5day +"%Y%m%d").tar.gz
#刪除本地5天前的資料
cd $BACKUP_DIR
rm -f $BACKUP_DIR/$HOSTNAME-DB_$(date -d -5day +"%Y%m%d").tar.gz $BACKUP_DIR/$HOSTNAME-Web_$(date -d -5day +"%Y%m%d").tar.gz
#最佳化並自動修復資料庫
$MYSQLCHECK -u $MYSQL_USER -p$MYSQL_PASS -oA --auto-repair > /dev/null 2>&1
#輸出資料庫,如果使用ROOT帳號會輸出成一個資料庫一個SQL檔
for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --single-transaction --skip-lock-tables ${db} > ${db}.sql)
done
#壓縮所有資料庫為一個壓縮檔並刪除所有的SQL檔
rm -f information_schema.sql mysql.sql performance_schema.sql
tar zcfP $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
#附件方式寄送資料庫壓縮檔到信箱,如壓縮檔超過25MB請勿使用gmail信箱,Yahoo很會掉信也別用
echo "DBBACKUP" | mutt -s "$DBName" -a $BACKUP_DIR/$DBName $MAIL_TO
#壓縮網站資料
tar zcfP $BACKUP_DIR/$WebName $WEB_DATA
#上傳到FTP空間並刪除FTP空間5天前的資料
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_BACKUP
delete $OldDB
delete $OldWeb
put $DBName
put $WebName
bye
END

儲存好在FTP直接加權限chmod 700 /public_html/backup/WebDBtoFTP.sh,最後在去cPanel控制台那邊的Cron Jobs設定
/home/用戶名/public_html/backup/WebDBtoFTP.sh
另外一個這是只備份MySQL資料庫到信箱的腳本

#!/bin/bash
############### 你要修改的地方從這裡開始 ###############
MYSQL_PATH=mysql                   # MySQL程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQLDUMP=mysqldump                # MySQLDUMP程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQLCHECK=mysqlcheck              # MySQLCHECK程式路徑,cPanel或安裝時沒指定位置的不用修改
MYSQL_USER=root                    # MySQL用戶名
MYSQL_PASS=MySQL密碼               # MySQL密碼
MAIL_TO=qoo@gmail.com              # 資料庫發送到的郵箱
HOSTNAME=qoo.com                   # 主機名稱
BACKUP_DIR=/public_html/backup     # 備份檔位置
############### 你要修改的地方從這裡結束 ###############
#定義資料庫的名字和舊資料庫的名字
DBName=$HOSTNAME-DB_$(date +"%Y%m%d").tar.gz
#刪除本地7天前的資料
cd $BACKUP_DIR
rm -f $BACKUP_DIR/$HOSTNAME-DB_$(date -d -7day +"%Y%m%d").tar.gz
#最佳化並自動修復資料庫
$MYSQLCHECK -u $MYSQL_USER -p$MYSQL_PASS -oA --auto-repair > /dev/null 2>&1
#輸出資料庫,如果使用ROOT帳號會輸出成一個資料庫一個SQL檔
for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --single-transaction --skip-lock-tables ${db} > ${db}.sql)
done
#壓縮所有資料庫為一個壓縮檔
rm -f information_schema.sql mysql.sql performance_schema.sql
tar zcfP $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
#附件方式寄送資料庫壓縮檔到信箱,如壓縮檔超過25MB請勿使用gmail信箱,Yahoo很會掉信也別用
echo "DBBACKUP" | mutt -s "$DBName" -a $BACKUP_DIR/$DBName $MAIL_TO

—–
這邊解釋一下
/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql
這是貓的方式,會把全部的資料庫導在一個sql檔裡面,可能會對龜毛如我的人不方便判別,所以我修改成上面那樣按照資料庫名稱導出資料庫再用最高壓縮成一個壓縮檔。

Comments

comments

關於 窮苦人家的小孩

In every democracy, the people get the government they deserve. ~Alexis de Tocqueville
上一篇:
下一篇:

您可能會喜歡

在VMware快速部署CentOS 7或是Windows 10

首先說CentOS,下載osb …

一條回應

  1. 感謝!終於是把不能自己備份的mediawiki弄成每天備份了。這樣就不怕服務器傲嬌了。 🤪

發佈留言