文章地址:http://www.hostloc.com/thread-114247-1-1.htmlhtml
=================================================================================mysql
另一貼是之前登錄網站上傳備份,不那麼好用,並且使用網站上傳有限制.
我這個備份方案是直接使用dropbox同步,若是想實時同步就一直守護dropbox進程,會佔用必定資源.推薦小內存的VPS和我同樣使用cron定時備份.
1.linux上安裝dropbox
32位linuxlinux
- wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86
複製代碼
64位linuxsql
- wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64
複製代碼
解壓:數據庫
第一次運行生成host_id瀏覽器
- ~/.dropbox-dist/dropboxd &
複製代碼
生成id後,將host_id替換下面連接後面的字符在瀏覽器打開,輸入你的賬號密碼就綁定機器了.bash
- https://www.dropbox.com/cli_link?host_id=XXXXXXXXXXXXXXXXXXX
複製代碼
2.創建鏈接備份網站
正式開始同步你的網站,經過ln軟連接你全部要備份的目錄,例如:網站
- cd ~/Dropbox
- ln -s /home/wwwroot/html
- ln -s /home/wwwroot/htdocs
- ...
複製代碼
開始運行同步,美國的vps同步速度很是快的,1G的html文件,只花了幾分鐘所有同步完成spa
- ~/.dropbox-dist/dropboxd &
複製代碼
3.爲了節省資源,能夠不使用實時同步,只定時打開同步一天的文件再關掉以節省資源.
先關掉同步:rest
編寫定時同步腳本:
代碼以下:
- #!/bin/sh
- start() {
- echo starting dropbox
- /root/.dropbox-dist/dropboxd &
- }
- stop() {
- echo stoping dropbox
- pkill dropbox
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- esac
複製代碼
定時運行和關閉:
- chmod +x backup.sh
- crontab -e
複製代碼
天天4點開始同步,5點關閉同步.
其實通常天天更新數據很少不用打開這麼長時間,我本身用的一天只打開10分鐘,這個根據各人天天更新的數據量本身來設置.
- 0 4 * * * sh /root/backup.sh restart
- 0 5 * * * sh /root/backup.sh stop
複製代碼
4.乾脆把我從網上找的備份數據庫的腳本一併貢獻出來,適合懶人使用
腳本以下:
- #!/bin/bash
- DBName=修改成數據庫名
- DBUser=修改成數據庫用戶名
- DBPasswd=修改成數據庫密碼
- BackupPath=/root/Dropbox/
- LogFile=/root/db.log
- DBPath=/usr/local/mysql/var/ #備份的數據庫目錄
- #BackupMethod=mysqldump
- #BackupMethod=mysqlhotcopy
- #BackupMethod=tar
- NewFile="$BackupPath"db$(date +%y%m%d).tgz
- DumpFile="$BackupPath"db$(date +%y%m%d)
- OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz #自動刪除5天前的備份
- echo "-------------------------------------------" >> $LogFile
- echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
- echo "--------------------------" >> $LogFile
- #Delete Old File
- if [ -f $OldFile ]
- then
- rm -f $OldFile >> $LogFile 2>&1
- echo "[$OldFile]Delete Old File Success!" >> $LogFile
- else
- echo "[$OldFile]No Old Backup File!" >> $LogFile
- fi
- if [ -f $NewFile ]
- then
- echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
- else
- case $BackupMethod in
- mysqldump)
- if [ -z $DBPasswd ]
- then
- mysqldump -u $DBUser --opt $DBName > $DumpFile
- else
- mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
- fi
- tar czvf $NewFile $DumpFile >> $LogFile 2>&1
- echo "[$NewFile]Backup Success!" >> $LogFile
- rm -rf $DumpFile
- ;;
- mysqlhotcopy)
- rm -rf $DumpFile
- mkdir $DumpFile
- if [ -z $DBPasswd ]
- then
- mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
- else
- mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
- fi
- tar czvf $NewFile $DumpFile >> $LogFile 2>&1
- echo "[$NewFile]Backup Success!" >> $LogFile
- rm -rf $DumpFile
- ;;
- *)
- service mysql stop >/dev/null 2>&1
- tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
- service mysql start >/dev/null 2>&1
- echo "[$NewFile]Backup Success!" >> $LogFile
- ;;
- esac
- fi
- echo "-------------------------------------------" >> $LogFile
複製代碼
5.刪除卸載dropbox方法:
- killall dropbox
- rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py
複製代碼