Moodle平台自动远程备份策略研究与实现



  0 引言

  Moodle是澳大利亚教师Martin Dougiamas基于建构主义教育理论而开发的课程管理系统,是一个免费的开放源代码的软件,目前在各国已广泛应用[1]。我国有许多学校已开始使用这一免费且功能强大的课程管理平台,但在使用过程中也碰到诸多难题,如何安全、有效地备份Moodle平台数据就是其中一个问题。Moodle平台仅提供课程备份功能,对数据库和用户上传文件等重要内容没有提供有效而安全的备份措施,如果不能安全、有效地备份Moodle平台数据,就有可能丢失课程信息、学生信息等数据,从而影响Moodle平台的使用与推广。笔者通过对Moodle平台数据备份的研究,提出一种自动远程备份Moodle平台数据的策略与方法,成功解决了Moodle平台数据备份的问题。

  1 Moodle平台数据备份

  Moodle平台包含的重要数据有:学生基本信息、学生学习数据、教师课程信息以及用户提交的各种资源文件,因此,Moodle平台数据的备份必须要完整涵盖所有信息、课程数据、学习数据等等,当Moodle平台出现灾难性损毁事件时可完整恢复整个站点,从而保证Moodle平台安全、平稳地运行。Moodle平台的数据备份可分为站点备份、课程备份、课程自动备份3方面内容。

  1.1 Moodle平台站点备份

  Moodle平台站点备份指系统管理员备份Moodle站点所有相关数据,站点备份结果可让Moodle站点恢复到备份之前的状态。为了减少因站点故障而丢失大量数据或缩短站点恢复时间,Moodle官方站点建议经常进行Moodle平台站点备份。Moodle平台站点备份由以下3部分组成:①存储在数据库系统中的数据。Moodle平台支持多种主流数据库,其中,MySQL数据库和PostgreSQL数据库是Moodle平台开发过程中主要使用的数据库,有非常丰富的相关文档可供查询,是Moodle官方站点推荐使用的数据库。Moodle平台也完全支持微软公司的MSSQL数据库,但Moodle的部分插件可能没有在MSSQL数据库上进行测试,因此,选择MSSQL可能存在部分插件无法正常工作的情况。Moodle平台不完全支持Oracle数据库,Moodle官方站点不推荐使用Oracle数据库。Moodle平台的数据库备份方法与所选数据库种类的不同而不同;②Moodle平台使用过程中由用户上传的文件存储在Moodledata文件夹内;③Moodle平台的源文件,也就是Moodle平台的源程序文件。

  Moodle平台源文件目录下的config.php文件中记录有以上3部分文件的相关信息,相应的查看方法如下:①$CFG→dbname 数据库名称;②$CFG→prefix 数据表名称前辍;③$CFG→dataroot 所有用户上传的文件存储路径;④$CFG→wwwroot Moodle平台源文件存储路径。

  Moodle平台数据变化最频繁的是数据库和用户上传的文件,因此,经常备份这两部分数据显得非常重要。而Moodle平台源文件只有在代码发生变化、Moodle系统升级、安装插件等情况下才需要备份。

  1.2 Moodle课程备份

  使用Moodle课程备份功能可以保存一门课程的部分或所有内容。有编辑权限的任课教师可以通过Moodle课程备份功能备份课程,也可下载已经备份成功的课程文件保存或用于其它Moodle站点。在实际应用中,课程备份一般由任课教师完成,而Moodle平台的站点管理员应该设置课程自动备份参数,对整个Moodle站点的所有课程进行备份。

  1.3 Moodle课程自动备份

  课程自动备份可以为整个Moodle站点的各门课程执行备份程序,因此,在Moodle服务器访问量较小时执行自动备份功能很适用。当执行自动备份程序时,所有Moodle站点内符合备份条件的课程都会被备份,备份结果是每一门课程生成一个备份文件,此项工作将占用处理器的大部份资源,因此,当Moodle站点有许多学生正在访问时不宜执行自动备份。为了正常执行自动备份程序,Moodle站点必须定期执行cron.php程序,该程序是Moodle的维护程序,cron.php程序位于Moodle源程序中的/admin/cli/文件夹下。

  2 Shell脚本和自动任务命令Crontab

  自动远程备份策略的实现用到了Linux系统中的Crontab(自动任务命令),该命令可让操作系统在指定时间内自动执行Moodle平台自动远程备份脚本,脚本文件使用Shell语言书写。

  2.1 Shell脚本

  Shell是用户与内核进行交互操作的一种接口,是Linux最重要的软件之一[2]。Shell是命令解释器,读取标准输入设备或文件从而执行命令。Shell脚本文件是一个纯文本文件,包含一些Shell的语法与命令,就像Windows操作系统下的批处理文件,其最简单的功能就是将许多命令写在一起,执行Shell脚本文件就可以执行它所包含的命令。