体育平台

VPS備份到FTP的自動腳本

VPS具有很高的可自定義性,因此得到了許多站長的青睞,但是同時由于低價盛行加上個別無良One Man的跑路,無疑給大家帶來了諸多數據丟失的風險,無論如何,數據備份才是王道!微魔曾經為大家介紹了網站數據的遷移教程(虛擬機->VPSVPS->VPS),雖然這些教程同樣適用于備份,但手動操作未免有些麻煩。本文將為您介紹如何使用sh腳本完成對于VPS自動備份網站數據到FTP空間上。

首先,關于這個腳本,來自于Cat的大作()。大家具體的問題請移步請教原作者,微魔自己也只是懂得大概而已~
其次,關于FTP空間,仁者見仁智者見智了,比如Godaddy曾經的免費10G以及BuyVM附贈的5G空間都很不錯~

最后聲明一下我示例的文件目錄結構:我在/home下操作,自動腳本名稱為backup.sh(放置于/home目錄下),VPS本地本分目錄為/home/backup

1)確保自己在home目錄(若不是,運行:cd /home)

2)新建backup文件夾(命令:mkdir backup)

3)新建腳本backup.sh

vi backup.sh

復制以下代碼(復制完后:wq!保存哦~):

#!/bin/bash
#你要修改的地方從這里開始
MYSQL_USER=root #mysql用戶名
MYSQL_PASS=123456 #mysql密碼
FTP_USER=vmvps #ftp用戶名
FTP_PASS=123456 #ftp密碼
FTP_IP=ftp.gaasled.com #ftp地址
FTP_backup=backup #ftp上存放備份文件的目錄,這個要自己得ftp上面建的
WEB_DATA=/home/wwwroot #要備份的網站數據
#你要修改的地方從這里結束
#定義數據庫的名字和舊數據庫的名字
DataBakName=Data_$(date +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -5day +”%Y%m%d”).tar.gz
#刪除本地3天前的數據
rm -rf /home/backup/Data_$(date -d -3day +”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
cd /home/backup
#導出數據庫,一個數據庫一個壓縮文件
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#壓縮數據庫文件為一個文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#壓縮網站數據
tar zcf /home/backup/$WebBakName $WEB_DATA
#上傳到FTP空間,刪除FTP空間5天前的數據
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

因為Email功能我認為比較雞肋,所以我給去除了~

?4)測試腳本運行如何

sh backup.sh

5)給腳本添加權限

chmod +x backup.sh

6)添加每日自動運行命令(每天00:00自動運行)

crontab -e

00 00 * * * /home/backup.sh

猜你 喜歡

關于作者: 微魔

小微魔,大智慧!

多條評論

  1. 這個文章好 ,比較使用,方便很多了
    謝謝博主

    再詢問下 最近有沒有com的和其他便宜后綴域名的 優惠碼, 支持支付寶的告訴一下郵箱baiduway@qq.com非常感謝咯

    1. 首先感謝支持,其次,關于你說的域名優惠碼,那是很多,但是取決你所需要的優惠幅度,至于支持支付寶嘛…適用的就非常少了…

  2. 如果可以提供 一個自動備份發送郵件到我的QQ郵箱的就方便多了..
    如果需要實現該如何修改啊?

    1. 你可以看下Cat的原帖(我文章里有鏈接),因為郵箱備份只能備份數據,不能備份圖片之類的,而且郵件服務器有時配置不好…所以我給砍掉了~

  3. 怎么才能知道crontab -e這個指令有沒有加上,我輸入這個指令之后,然后復制了下面的執行,然后按esc 然后Ctrl zz 保存的。

    1. 可以crontab -l查看crontab的任務。關于你說的保存問題,和vi的用法是一樣的。

      1. 無論是在本地,還是在ftp上,我都建了backup,這一行我也沒變FTP_backup=backup #,但是執行的時候就說沒這個目錄,能說說為什么么~求解

          1. 徹底無語,在別人的幫助下,執行腳本,備份沒問題,本地有備份,ftp上也有,但是設置了0點執行,第二天看,本地有備份,但是ftp上無備份,不知道微魔有遇到這情況不~

        1. 那個代碼我忘了,你baidu一下“Wordpress免插件評論郵件提醒”吧,是代碼,不是插件,那個作者好像還挺牛的,名字我也忘了…

  4. Pingback:
  5. 這個好東西,我就是沒得備份的好習慣,要是發送郵件到QQ郵箱,或者本地的更好咯!

  6. Pingback:

發表評論