Joomla/Joomla!全站备份、迁移工具Akeeba Backup使用详解
对于一个 Joomla! 站长来说,网站搭建成功后,第一个应该安装并且熟练掌握的 Joomla 组件就是 Akeeba Backup 这个全站备份/恢复/迁移工具。本教程将详细介绍 Akeeba Backup 的用法。
Akeeba Backup简介[ ]
Akeeba Backup 原名 JoomlaPack,第一个版本是针对 Joomla! 1.0.x 平台的。当时 Joomla! 发布了新闻来介绍这个 Joomla! 平台的一键还原工具。说“一键还原”有点夸张,因为整个操作过程需要点击多次鼠标才能完成。但在当时,JoomlaPack 是唯一能够实现“傻瓜式”全站备份和恢复、迁移的免费组件。后来在 Joomla! 1.5.x 平台上,仍然沿用 JoomlaPack 这个名称。
进入2010年之后,鉴于Joomla官方对“Joomla”一词的使用限制,JoomlaPack更名为Akeeba Backup,同时将原来的完全免费政策改变为免费与收费并存,免费版叫做 Akeeba Backup Core,基本上满足大多数网站需求;收费版叫做 Akeeba Backup Professional,增加了一些额外的功能,例如将备份结果保存到 Amazon S3 “云存储”网盘中。
从最初的 JoomlaPack 到最新的 Akeeba Backup,软件的操作界面变化不大,新版本更加美观,AJAX 特效更加丰富,不过熟悉旧版的用户在新版本不会有迷失感,因为整个操作程序基本没变。
Akeeba Backup的工作原理[ ]
每一个 Joomla 用户应该都很清楚 Joomla 核心的安装过程,这是建站的第一步操作,谁也无法越过。Joomla 友好的安装程序给所有 Joomla 用户留下了深刻印象。而 Akeeba Backup 正是看到了这一点:既然大家都熟悉并且喜欢 Joomla 的核心安装界面,那么,何不将网站备份为类似核心安装包的文件包,然后通过模仿核心安装的过程来进行网站恢复?
一旦有了这个明确的思路,那么施行起来也不难:先将全部的文件系统原样打包,保持其目录/文件结构不便;新增 /installation 目录(这个目录在核心安装完后就删除了,现在为了恢复原样,必须创建),并按照核心安装包的规则,在里面包含一个 SQL 文件,这个 SQL 文件就是当前网站数据库的备份;然后在 /installation 目录里面通过相关文件引导用户完成安装(恢复)过程的操作。
Akeeba Backup几个关键概念[ ]
临时目录[ ]
Akeeba Backup 的备份过程相当于提取、组装、打包的多个操作依次执行,这些操作都需要有一个位置来存放中间环节的临时文件,因此就需要一个临时目录。默认是使用 Joomla 自带的 /tmp 目录。我们也推荐使用该目录。
输出目录[ ]
备份结束之后,必须将备份结果保存在服务器上某个位置(除非你设置的是直接通过 FTP 传输备份结果,或者直接备份到”云存储“网盘)。这个存放位置就叫做”输出目录“。默认是 /administrator/components/com_akeeba/backup 这个目录,不过我们认为该目录路径太深,不方便下载,推荐修改为 /tmp 这个目录。
提醒一点:不管是 /administrator/components/com_akeeba/backup 这个目录,还是 /tmp 这个目录,都是可以通过 http 协议访问到的路径。因此就存在被黑客扫描攻击的可能。因此,如果你的服务器上还有 www 根目录之外的路径(例如在 public_html 目录之外),推荐将备份结果保存在那里,安全性更高。
文件拆分[ ]
Akeeba Backup 的整个备份打包过程都是在服务器端执行的。为了避免对大型网站执行备份时,对较大文件的读写导致 PHP 超时(timeout)错误,Akeeba Backup 广泛使用了”文件拆分“技巧:就是对大文件每次读取一个片段,然后就写入磁盘,接下来启动新的会话(session),再读取一个片段,写入一个片段…… 如此循环,直到将大文件处理完,再进行下一个文件。对数据库的备份也是如此,每个 session 只处理一个片段。
Akeeba Backup 这么做,主要是想避免”超时错误“。不过,有些服务器的配置相当好,这种情况下,拆分片段会使得备份过程冗长,因此 Akeeba Backup 允许用户在后台自己调整文件片段大小。
文件拆分还有一个问题,就是会导致 MySQL 数据库的备份结果不是一个单一的 .sql 格式文件,而是很多小片段,文件格式也不是 .sql(只有第一个片段的文件扩展名是 .sql)。这样的数据库备份结果无法通过 BigDump 数据库导入工具 来处理。因此,你如果希望将来通过 BigDump 来恢复 Akeeba Backup 所作的数据库备份结果,就必须对备份方案进行设置,让它在备份MySQL数据库时,不拆分文件,这一点我们在视频教程中有清楚的演示。
JPA压缩格式[ ]
在最早的时候,JoomlaPack使用zip格式来保存备份结果。但是很快作者 Nicholas K. Dionysopoulos 就发现,zip 格式处理较大文件时,可能会出错。他深入研究后发现,这是 zip 格式自身的算法导致的,与操作系统等外界因素无关。网站备份就是为了”数据安全“,如果把数据交给一个并不安全的 zip 格式来保管,那还有什么意义?
那么,该使用何种压缩文件格式呢?.gzip/.gz 格式不存在 zip 格式的那种问题,但是 Nicholas 考虑到并非每个服务器上都能制作 gzip 格式文件,例如在 IIS 服务器上就比较难。因此,他最后自创了 JPA 这个全新的压缩文件格式。
JPA 压缩文件无法通过常见的 WinRAR 或者 7-zip 来解压。因为这是 Akeeba Backup 带来的全新文件格式。为了解决解压问题,Akeeba 团队提供了两种方案:一种是在线解压工具,就是通过直接运行服务器端的 kickstart.php(需手动上传)工具来解压;另一种是桌面解压工具,叫做 Akeeba eXtract Wizard(分别有针对 Windows/Mac/Linux平台的版本),该软件可以直接在 PC 上解压 JPA 压缩包。
目录/文件除外[ ]
在你的 Joomla! 网站中,很显然并非每一个文件/目录都是非常珍贵而需要备份的。例如,/cache 目录里面没有什么重要内容,即使全部删除也不会影响网站运行,因为前台页面一打开,就会生成新的缓存内容。那么,就没必要将 /cache 目录备份起来,徒增备份结果的文件体积。
与此类似的还有 /tmp 临时目录。这里原本没有什么重要内容,除非你自己上传了什么文件进去。因此,Akeeba Backup 默认已经自动排除了对 /cache 和 /tmp 目录(包括其中的子目录、文件)的备份。如果你的网站上还存在一些不需要放进备份包的文件或目录,你就可以通过 Akeeba Backup 提供的”文件和目录排除“功能来设置。
Akeeba Backup的操作过程[ ]
1.对于大部分 Joomla 站长来说,不需要知道 Akeeba Backup 后台设定中的每一个参数。其默认设置完全可以工作。你要做的就是:安装 Akeeba Backup;从后台进入 Akeeba Backup 并点击”立即备份“按钮;等待数分钟后,看到备份成功的消息,然后下载并保存你的备份结果。就这么简单。
2.如果你使用默认方案时仍然出错,这时才需要通过设定参数来进行处理。一般都是由于服务器配置太差导致超时错误,或者路径设置不正确。如果你仔细检查这些参数,很容易就弄好了。
3.某些比较繁忙的站长,或许同时管理多个网站,那么 Akeeba Backup 也提供了配套的远程备份工具,叫做 Akeeba Remote Control,你可以通过该工具对多个 Joomla 网站同时进行备份管理。
4.Akeeba Backup 还允许通过 Cron 计划任务来进行”定时自动备份“。这要求站长必须熟悉 Apache 服务器上的 Cron 操作。
5.Akeeba Backup 甚至还提供了”前台备份“功能,就是通过访问特定的 URL 来触发备份操作。为了避免这个功能被他人恶意利用,Akeeba Backup 要求站长给前台备份网址添加保密字串,这样就提高了安全性。