先前就有很多前輩在說,VPS可以自行備份,甚至於同步備份(backup),備援(redundant),但是Vitrual Host好像做不到。我當然知道這是原理原則的問題,VPS可以自己建置環境,自己處理相關的設定,當然就可以自行安排備份,我之前的做法,兩台Linux之間,用Rsync的方式來備份,每5分鐘做一次備份,最多也才損失5分鐘的資料,如果出了問題,Samba快速切換,就可以切到備份的主機上。但是虛擬主機受限多多,自己沒有root的權限,也不見得可以登入主控台,想要下指令寫script的方式似乎不可行,面對虛擬主機的使用者來說,備份真的很重要,但是在虛擬主機上真的可以進行備份嗎?
老實說,我也花了很多假日的時間在想這個問題,各種方式我都想過了,我認為花錢能解決的事,最解單,我提出NAS的Solution,利用NAS的FTP功能,自動備份,但是廸雅哥打我的槍說,這個方案永不考慮,我就不懂,有什麼不考慮的,這個方案很好啊!我們還可以利用這個名義去弄條ADSL進來。
當然,備份可以依據資料的重要決,決定備份的週期和方式,日備份,可以用差異備份,週備份,可以用全備,月備份和季備份,可以異地備份,端看資料的重要性和更新的頻率而定。
其實網路上有前輩提供了一個方法,進行資料的備份,備份完之後,可以遠端丟資料到另一台FTP上,之前我提供的是mysql資料庫的備份目法,連同這個備份方式,已經可以提供最完善的備份,不論是資料庫還是程式,當然,空間必需夠大,CPU運算效能要夠,不然光是備份,CPU效能就吃掉了,再跑幾個Process,超過CPU Utilization上限,可是會被停權的,要非常的小心。
<?php // PHP script to allow periodic cPanel backups automatically. // Based on script posted by max.hedroom in cpanel.net forums // This script contains passwords. KEEP ACCESS TO THIS FILE SECURE! // ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED ********* // Info required for cPanel access $cpuser = "username"; // Username used to login to CPanel $cppass = "password"; // Password used to login to CPanel $domain = "example.com"; // Domain name where CPanel is run $skin = "monsoon"; // Set to cPanel skin you use (script won't work if it doesn't match) // Info required for FTP host $ftpuser = "ftpusername"; // Username for FTP account $ftppass = "ftppassword"; // Password for FTP account $ftphost = "ftp.example.com"; // Full hostname or IP address for FTP host $ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive) // Notification information $notifyemail = "[email protected]"; // Email address to send results // Secure or non-secure mode $secure = 0; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP // Set to 1 to have web page result appear in your cron log $debug = 0; // *********** NO CONFIGURATION ITEMS BELOW THIS LINE ********* if ($secure) { $url = "ssl://".$domain; $port = 2083; } else { $url = $domain; $port = 2082; } $socket = fsockopen($url,$port); if (!$socket) { echo "Failed to open socket connection... Bailing out!\n"; exit; } // Encode authentication string $authstr = $cpuser.":".$cppass; $pass = base64_encode($authstr); $params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&submit=Generate Backup"; // Make POST to cPanel fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n"); fputs($socket,"Host: $domain\r\n"); fputs($socket,"Authorization: Basic $pass\r\n"); fputs($socket,"Connection: Close\r\n"); fputs($socket,"\r\n"); // Grab response even if we don't do anything with it. while (!feof($socket)) { $response = fgets($socket,4096); if ($debug) echo $response; } fclose($socket); ?>
裡面有足夠多的註解和說明,大家可以看一下,過陣子有空,我會實測這隻程式,希望能夠跑的起來,順利的備份資料。
隨機文章
- 痞客邦使用xmlrpc新增照片失敗 (2008-09-14)
- VBoxClient: the VirtualBox kernel service is not running. Exiting. (2016-02-15)
- Eee PC熱賣 美國也缺貨 (2007-11-16)
- 為什麼汽油的價錢一直在掉 瓦斯的價錢都沒有掉 (2010-02-26)
- 活動通讓你輕鬆辦活動 (2011-03-18)