我遇到的问题是让我的核心站点建立在wordpress上,另一个数据库用于网站的电子商务部分,我想将整个站点(所有文件,数据库等)备份到DropBox每天基础.
经过漫长的搜索,我找不到任何正在找的东西.
免责声明:您不需要运行wordpress或电子商务网站,以使其正常工作.它可以在任何MySQL数据库上工作,需要PHP.
我遇到了WordPress Backup to Dropbox plugin,这让我有90%左右.该插件允许我备份站点上的所有文件,并且它按照您计划的频率进行wordpress数据库备份.
问题是插件只做了wordpress数据库的备份,而不是我的电子商务数据库.
我还发现了一个MySQL backup to Dropbox教程(信用到底),下面的一些代码是基于的.这是一个很棒的教程,但我希望在不同的时间备份和删除备份 – 该教程同时备份和删除所有.
要存储电子商务数据库的备份,我在我的站点根目录中创建了一个文件夹(/ temp – 无论你想要什么).然后我不得不实际创建数据库备份.打开文本编辑器并创建一个名为backup_dropBox.PHP的文件.
<?PHP // location of your /temp directory relative to this file. In my case this file is in the same directory. $tempDir = ""; // username for e-commerce MysqL DB $user = "ecom_user"; // password for e-commerce MysqL DB $password = "ecomDBpa$$word"; // e-commerce DB name to backup $dbName = "ecom_db_name"; // e-commerce DB hostname $dbHost = "localhost"; // e-commerce backup file prefix $dbPrefix = "db_ecom"; // create backup sql file $sqlFile = $tempDir.$dbPrefix.".sql"; $createBackup = "MysqLdump -h ".$dbHost." -u ".$user." --password='".$password."' ".$dbName." > ".$sqlFile; exec($createBackup); //to backup multiple databases,copy all of the above code for each DB,rename the variables to something unique,and set their values to whatever is appropriate for the different databases. ?>
现在,该脚本应该在运行时创建数据库“ecom_db_name”的备份.让它按计划的时间间隔运行(我想让它运行只需几分钟,我的wordpress备份开始在早上7点运行).您可以使用WP-Cron(如果您的站点获得足够的流量可靠地触发它在正确的时间运行)或安排cron作业.
我不是cron工作和这些类型的命令的专家,所以可能会有更好的方法.我已经在两个不同的网站上使用它们,并以两种不同的方式运行它们.玩耍最适合你的事情.
第一种方式是没有密码保护的目录,第二种方式是password protected directory.(用用户名和密码替换用户名和密码,并且明显地将example.com/temp/backup_dropBox.PHP设置到文件所在的位置服务器).
Cron作业在WP备份前5分钟运行backup_dropBox.PHP
55 6 * * * PHP /home/webhostusername/public_html/temp/backup_dropBox.PHP
要么
55 6 * * * wget -q -O /dev/null http://username:Password@example.com/temp/backup_dropBox.PHP
现在,cron作业设置为运行backup_dropBox.PHP,并在上午6:55每天创建我的数据库备份.从上午7点开始的wordpress到DropBox备份通常需要大约5-6分钟,但可能需要一点时间.
在我们成功备份到DropBox之后,我想删除我的.sql备份文件,所以它不会永远坐在那里,让某人以某种方式打开/下载数据库文件.
再次启动文本编辑器,并创建另一个名为clr_bkup.PHP的文件.
clr_bkup.PHP
<? $tmpDir = ""; //delete the database backup file unlink($tmpDir.'db_ecom.sql'); // if you had multiple DB backup files to remove just copy the line above for each backup,and replace 'db_ecom.sql' with your DB backup file name ?>
由于wordpress备份需要几分钟的时间才能完成,所以我想运行一个cron作业,以便在过去7点的10时间执行clr_bkup.PHP,这应该给它足够的时间.再次,下面的第一个cron作业是一个不受保护的目录,第二个是一个密码保护的目录.
Cron作业运行clr_bkup.PHP WP备份启动后10分钟
10 7 * * * PHP /home/webhostusername/public_html/temp/clr_bkup.PHP
要么
10 7 * * * wget -q -O /dev/null http://username:Password@example.com/temp/clr_bkup.PHP
事件顺序
为了帮助你解决发生的事情,这里是时间轴:
6:55 am:Cron Job计划运行backup_dropBox.PHP,它创建一个我的数据库的备份文件.
上午7:00:wordpress备份到DropBox运行,并备份自上次备份以来已更改的所有文件,其中包括我的5分钟旧的新创建的数据库备份.
上午7:10:现在DropBox备份已经完成,所以Cron Job计划运行clr_bkup.PHP,它从服务器中删除备份文件.
变量,备注和杂项.信息
定时
挂断我的第一件事情就是让时机正确.为了简单起见,我在上面的例子中使用了时代,好像一切都发生在同一个时区.实际上,我的网络主机的服务器位于美国西海岸,而我的wordpress时区设置为美国东海岸(3小时差).我的实际cron作业设置为比上面显示的3个小时(服务器时间)运行.每个人都会有所不同.最好的方法是先了解时差.
运行备份与时间检查
在没有密码保护的目录中,我希望保持backup_dropBox.PHP脚本在一天的其他时间比上午6:55(例如在上午10点在浏览器中访问)运行.我在backup_dropBox.PHP文件的开头包含一个时间检查,它基本上检查是否不是上午6:55,那么不要让它执行其余的代码.我将backup_dropBox.PHP修改为:
<?PHP $now = time(); $hm = date('h:i',$now); if ($hm != '06:55') { echo "error message"; } else { // DB BACKUP code from above goes here } ?>
我想你也可以将它添加到clr_bkup.PHP文件中,只允许它在上午7:10删除备份文件,但是我没有真正看到需要,因为clr_bkup.PHP只会在6:55之间做任何事情-7:上午10点尽管如此,如果你决定去那条路线.
不在wordpress?
有许多免费和付费的服务将您的网站备份到DropBox或其他类似的服务,如Google Drive,Amazon S3,Box等,或者有些会将文件存储在他们的服务器上收费.
Backup Machine,Codeguard,Dropmysite,Backup Box或Mover等等.
想要冗余的非现场备份?
有很多服务可以让您在上面列出的任何云存储站点上自动创建远程冗余备份.
例如,如果您将站点备份到DropBox,您可以使用名为If This Then That (IFTTT)的服务自动添加上传到特定Dropbox folder to Google Drive的文件.这样DropBox与其服务器有任何问题,您还将拥有Google云端硬盘备份.上面列出的备份盒也可以这样做.
希望这可以帮助