备份没有直接SQL访问的网站,只有FTP访问

我一直在帮忙的一个网站是托pipe在一个只提供文件的FTP主机上(不是我的select),而且数据库只能从主机本身或phpMyAdmin访问。

该网站使用PHP版本5.3.13在Apache上运行。

由于不时和不可预见的事情发生在网站,我想有一个网站的备份。 我当然已经拥有了大部分的基础设施(数据库模式和网站源文件),但是如果网站遭到黑客攻击或其他不好的事情发生,我会留下一个空白的网站。 所以我当然需要备份所有用户上传的媒体和数据库中的所有数据。

问题是我真的不确定如何做到这一点,当我所有的FTP访问和没有直接访问数据库。 任何build议如何得到一个体面的自动备份这个网站,可以定期运行没有太多的麻烦?

你可以通过一些黑客行为来实现它(如果`不能在下面工作,尝试execsystempassthru ,任何你可以的)。 如果你对此有所了解,也可以禁用这些限制,但我不认为这是讨论它们的地方。

该脚本将如下所示:

 <?php `mysqldump -uUSERNAME -pPASSWORD DATABASE > dump.sql`; `tar -cf backup.tar .`; // Download backup.tar unlink('backup.tar'); ?> 

当然,这是基本的,但只是给你一个想法。 为了保护它,有一个用.htaccess设置密码保护的backup/目录,这样只有你可以用密码下载它们,并在那里放置backup.tar。

如果你有这样的“shell访问”级别,可能性是无止境的。

phpMyAdmin能够导出数据库,尽pipe大小和超时限制可能会使这不切实际。

如果你通过FTP访问MySQL数据文件,那么停止数据库然后复制这些文件可能是你最好的select。

鉴于您的设置,自动备份将是困难的。 Web主机提供商是否有任何备份选项? 能够运行cron /计划的工作? 您可能已经知道,但phpMyAdmin可以执行一个mysqldump,并与FTP,你可以抓住你的文件,但这不是自动的。

从理论上讲,你可以通过编程的方式将FTP下载到你的虚拟主机帐户并下载文件,并且编写一个MySQL数据转储的下载脚本,但这是对时间和资源的低效使用,而不是一个适当的备份。

另一个select,你可能会考虑使用wgetcurl等在本地镜像您的网站或您select的另一个位置。这将使您的网站的静态版本与静态文件,并帮助您恢复您的网站,如果你需要。 这可以通过本地系统上的cron来设置,但是当然,恢复数据库的数据不包含在这个选项中。

为了能够恢复到某个时间点,您需要定期查看备份/快照 – 主机提供商必须提供的东西。

几个分手的想法:

  • 我担心,如果我的虚拟主机只提供FTP访问,因为FTP以明文forms传输凭证。
  • 如果你期望发生不好的事情,把它们列出来,看看你如何解决它们。 例如,ftp上的sftp,强密码,对组件的访问受限等。
  • 时间去寻找一个新的networking主机? (_:

HTH和祝你好运!

您可以手动将phpMyAdmin中的数据库转储到服务器上的文件中,以避免出现http超时问题。 我只是三重检查Web主机的控制面板上的一个选项来自动执行数据库转储服务器的时间表。 显然,那会好很多! 无论哪种方式,一旦数据库转储到服务器,您可以备份与其他应用程序文件系统数据的转储。

有一些程序可以让你基本上通过ftp进行rsync风格的增量备份。 否则,你会被困在每次完整的备份。 请看这个ServerFault的问题 。 我在底部提到的curlftps的经验是,超时/慢速可以使中型文件(例如超过20MB)的备份困难 – 它无法读取文件的末尾。 但是,YMMV。 祝你好运!

如果您无权访问,则可以使用cron服务(请参阅http://www.cronjobservices.com/或者您的主机可以提供一个)与MySQLDumper&#xFF08; http://www.mysqldumper.net/ )一起使用如地狱。

如果你有访问一个shell(我不这么认为你的描述),我build议使用mysqldump和cronjobs。

对于文件内容,你可以创build一个PHP脚本来压缩一切,但你仍然需要自己下载这些文件。