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

有人找我要備份腳本,我就只好丟出我的啦! 在這邊先感謝貓言貓語的作者~ 我是參考他寫的自動備份網站文件和數據庫上傳到FTP空間再另外修改成用WinRAR來壓縮的方式做備份,因為一般普通人比較認識WinRAR,而且我之前寫的只適用區網。 :pu

用VPS的人一樣可以參考這個檔案,只要建立好備份檔位置以及腳本加權限就可以了。

*********更新歷史*********

2010/10/01 - 首次發表
2010/10/09 - 因為有人搞不懂怎用在cPanel上面,而且要簡單易懂... FUCK 還好看到貓有寫新的文章,不然真想揍人。總之 FUCK 08回來沒吃到西堤你丟災 :@ :@ :@
2010/10/25 - 更新最佳化並自動修復資料庫語法

-----

腳本來了~ FUCK 登入FTP後先在public_html目錄底下建立一個備份用的資料夾mkd /public_html/backup,然後在backup資料夾底下建立腳本WebDBtoFTP.sh,內容如下

CODE:
  1. #!/bin/bash
  2. ############### 你要修改的地方從這裡開始 ###############
  3. MYSQL_PATH=mysql                   # MySQL程式路徑,cPanel或安裝時沒指定位置的不用修改
  4. MYSQLDUMP=mysqldump                # MySQLDUMP程式路徑,cPanel或安裝時沒指定位置的不用修改
  5. MYSQLCHECK=mysqlcheck              # MySQLCHECK程式路徑,cPanel或安裝時沒指定位置的不用修改
  6. MYSQL_USER=root                    # MySQL用戶名
  7. MYSQL_PASS=MySQL密碼               # MySQL密碼
  8. MAIL_TO=qoo@gmail.com              # 資料庫發送到的郵箱
  9. HOSTNAME=qoo.com                   # 主機名稱
  10. FTP_IP=ftp.hotfile.com             # FTP地址
  11. FTP_USER=FTP用戶名                 # FTP用戶名
  12. FTP_PASS=FTP密碼                   # FTP密碼
  13. FTP_BACKUP=backup                  # FTP上存放備份檔案的資料夾
  14. BACKUP_DIR=/public_html/backup     # 備份檔位置
  15. WEB_DATA=/public_html/qoo.com      # 要備份的網站位置
  16. ############### 你要修改的地方從這裡結束 ###############
  17.  
  18. #定義資料庫的名字和舊資料庫的名字
  19. DBName=$HOSTNAME-DB_$(date +"%Y%m%d").tar.gz
  20. OldDB=$HOSTNAME-DB_$(date -d -5day +"%Y%m%d").tar.gz
  21. #定義網站資料的名字和舊網站資料的名字
  22. WebName=$HOSTNAME-Web_$(date +%Y%m%d).tar.gz
  23. OldWeb=$HOSTNAME-Web_$(date -d -5day +"%Y%m%d").tar.gz
  24. #刪除本地3天前的資料
  25. cd $BACKUP_DIR
  26. rm -rf $BACKUP_DIR/$HOSTNAME-DB_$(date -d -3day +"%Y%m%d").tar.gz $BACKUP_DIR/$HOSTNAME-Web_$(date -d -3day +"%Y%m%d").tar.gz
  27. #最佳化並自動修復資料庫
  28. $MYSQLCHECK -o --all-database -u $MYSQL_USER -p$MYSQL_PASS> /dev/null 2>&1
  29. $MYSQLCHECK -auto-repair --all-database -u $MYSQL_USER -p$MYSQL_PASS> /dev/null 2>&1
  30. #輸出資料庫,一個資料庫一個SQL壓縮檔
  31. for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
  32. ($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --skip-lock-tables ${db}> ${db}.sql)
  33. done
  34. #壓縮所有資料庫為一個壓縮檔
  35. tar zcf $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
  36. rm -rf $BACKUP_DIR/*.sql
  37. #附件方式寄送資料庫壓縮檔到信箱,如壓縮檔超過25MB請勿使用gmail信箱,Yahoo很會掉信也別用
  38. echo "內容:資料庫備份-$DBName" | mutt -a $BACKUP_DIR/$DBName -s "主旨:資料庫備份-$DBName" $MAIL_TO
  39. #壓縮網站資料
  40. tar zcf $BACKUP_DIR/$WebName $WEB_DATA
  41. #上傳到FTP空間,刪除FTP空間5天前的資料
  42. ftp -v -n $FTP_IP <<END
  43. user $FTP_USER $FTP_PASS
  44. type binary
  45. cd $FTP_BACKUP
  46. delete $OldDB
  47. delete $OldWeb
  48. put $DBName
  49. put $WebName
  50. bye
  51. END

儲存好在FTP直接加權限chmod 700 /public_html/backup/WebDBtoFTP.sh,最後在去cPanel控制台那邊的Cron Jobs設定

/home/用戶名/public_html/backup/WebDBtoFTP.sh

另外一個這是只備份MySQL資料庫到信箱的腳本

CODE:
  1. #!/bin/bash
  2. ############### 你要修改的地方從這裡開始 ###############
  3. MYSQL_PATH=mysql                   # MySQL程式路徑,cPanel或安裝時沒指定位置的不用修改
  4. MYSQLDUMP=mysqldump                # MySQLDUMP程式路徑,cPanel或安裝時沒指定位置的不用修改
  5. MYSQLCHECK=mysqlcheck              # MySQLCHECK程式路徑,cPanel或安裝時沒指定位置的不用修改
  6. MYSQL_USER=root                    # MySQL用戶名
  7. MYSQL_PASS=MySQL密碼               # MySQL密碼
  8. MAIL_TO=qoo@gmail.com              # 資料庫發送到的郵箱
  9. HOSTNAME=qoo.com                   # 主機名稱
  10. BACKUP_DIR=/public_html/backup     # 備份檔位置
  11. ############### 你要修改的地方從這裡結束 ###############
  12.  
  13. #定義資料庫的名字和舊資料庫的名字
  14. DBName=$HOSTNAME-DB_$(date +"%Y%m%d").tar.gz
  15. #刪除本地3天前的資料
  16. cd $BACKUP_DIR
  17. rm -rf $BACKUP_DIR/$HOSTNAME-DB_$(date -d -3day +"%Y%m%d").tar.gz
  18. #最佳化並自動修復資料庫
  19. $MYSQLCHECK -o --all-database -u $MYSQL_USER -p$MYSQL_PASS> /dev/null 2>&1
  20. $MYSQLCHECK -auto-repair --all-database -u $MYSQL_USER -p$MYSQL_PASS> /dev/null 2>&1
  21. #輸出資料庫,一個資料庫一個SQL壓縮檔
  22. for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
  23. ($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --skip-lock-tables ${db}> ${db}.sql)
  24. done
  25. #壓縮所有資料庫為一個壓縮檔
  26. tar zcf $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
  27. rm -rf $BACKUP_DIR/*.sql
  28. #附件方式寄送資料庫壓縮檔到信箱,如壓縮檔超過25MB請勿使用gmail信箱,Yahoo很會掉信也別用
  29. echo "內容:資料庫備份-$DBName" | mutt -a $BACKUP_DIR/$DBName -s "主旨:資料庫備份-$DBName" $MAIL_TO

-----

這邊解釋一下

/usr/local/mysql/bin/mysqldump -uroot -p123456 --databases db1 db2 db3 > /home/backup/databackup.sql

這是貓的方式,會把全部的資料庫導在一個sql檔裡面,可能會對龜毛如我的人不方便判別,所以我修改成上面那樣按照資料庫名稱導出資料庫再用最高壓縮成一個壓縮檔。

-----

另外好的免費的網路硬碟大多數空間都是1~2GB,不是沒FTP可用(ASUS WebStorageDropbox),或是限流量限很大(DriveHQ),所以只好還是用Hotfile跟FileServe了 :-#

Hotfile的好處是免費會員就有無限制硬碟空間,檔案90天無人下載才會被刪除,下載自己上傳的檔案可以免輸入驗證碼,但是還是會受限於下載間隔需要等待15分鐘 :-( 而且可以上傳單檔400MB(登入Hotfile是顯示可以上傳2GB,但免費會員單一檔案只能上傳400MB :-* ),購買高級會員資格(月繳9美元、半年35美元、年繳55美元)除了可以無限制的直接下載任何檔案、上傳的檔案永不刪除之外還免費贈送每月100GB的直連流量(Hot/Direct Linking),這可以讓你提供檔案給親朋好友直接下載而不需驗證碼唷! :$

測試了上傳Hotfile的兩組IP位置74.120.8.80、74.120.9.137得知Hotfile的位置在美東的佛羅里達州,離加州大概兩億光年吧~ 冏rz 不過從he.net這邊traceroute過去是7個節點、46ms,另外上傳速度都還有~2MB/s左右啦! 還算不錯,免費會員下載的速度都是在~250K左右,反正要是購買高級會員當然就用車車割個30線下載,一定爽爽滴囉~ XD

-----

而FileServe的好處是免費會員有500GB的硬碟空間,檔案60天無人下載才會被刪除,但自己上傳的檔案還是要輸入驗證碼以及忍受下載限制 :S 而免費會員可上傳單檔1GB(高級會員可上傳單檔2GB的檔案),購買高級會員資格(月繳9.99美元、半年34.99美元、年繳59.99美元、兩年99.99美元)則可以擁有無限的硬碟空間、無限制的直接下載任何檔案、並且上傳的檔案永不刪除,除此之外比較特別的就是支援FXP功能了。

測試上傳FileServe的兩組IP位置209.222.12.19、209.222.7.115得知FileServe的位置在紐澤西洲,離加州大概一億光年吧~ 再囧rz 從he.net這邊traceroute過去是12個節點、86ms,上傳速度只剩大約3百多KB/s,雖然地理位置是比FL近一點,但上傳速度反而差了粉多 :(

-----

最後要提醒一下在國外的付款方式最普遍都是支援信用卡以及PayPal,像在國外網站買東西我都推薦在PayPal註冊帳號後登錄信用卡資料在上面做付款動作比直接刷信用卡付款安全N倍,畢竟要是有什麼問題都可以由PayPal這種全球性的大機構來協調,才不會讓自己的權益白白受損,這篇PayPal 買家購物安全保障就是PayPal對網路買家很好的保證~ (Y) (Y) (Y) 而且現在PayPal繁體中文介面做的不錯了唷~! 大多不是阿六仔簡體文了。 (6)

-----

點此申請Hotfile帳號 :D
Hotfile Referral Program - Up to 25 USD per 1000 download

-----

點此申請FileServe帳號 :D
FileServe Referral Program - Up to 25 USD per 1000 download

  WebDBtoFTP.sh (2.3 KiB, 88 hits)

  DBtoMail.sh (1.5 KiB, 78 hits)

相關文章


粉好用ㄟ自動備份資料庫、網站到信箱、FTP的腳本 目前有1個評論

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

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>