通过终端批量恢复Moodle课程备份至指定课程区域(ID 20)
批量恢复Moodle课程备份至指定ID课程区域(Ubuntu终端实现)
完全可以通过Ubuntu终端的循环脚本实现批量恢复,以下是两种可靠的实现方式:
方法1:使用Moosh(Moodle命令行工具,推荐)
Moosh是简化Moodle命令行操作的工具,语法更简洁,适合批量任务。
前置步骤:安装Moosh
cd /path/to/your/moodle/admin/cli git clone https://github.com/tmuras/moosh.git cd moosh chmod +x moosh.php
批量恢复循环脚本
将所有.mbz格式的备份文件放在同一个目录(比如/home/you/moodle_backups),然后执行以下循环:
# 配置路径和目标ID BACKUP_DIR="/home/you/moodle_backups" TARGET_TAREA_ID=20 # 你的目标课程区域ID # 遍历所有备份文件执行恢复 for backup_file in "$BACKUP_DIR"/*.mbz; do echo "正在恢复: $backup_file" /path/to/your/moodle/admin/cli/moosh/moosh.php course-restore "$backup_file" "$TARGET_TAREA_ID" done
方法2:使用Moodle原生CLI脚本restore.php
直接调用Moodle自带的恢复脚本,无需额外安装工具,但参数更繁琐:
# 配置路径和目标ID BACKUP_DIR="/home/you/moodle_backups" MOODLE_ROOT="/path/to/your/moodle" TARGET_TAREA_ID=20 # 批量恢复循环 for backup_file in "$BACKUP_DIR"/*.mbz; do echo "处理备份文件: $backup_file" php "$MOODLE_ROOT/admin/cli/restore.php" \ --backupfile="$backup_file" \ --categoryid="$TARGET_TAREA_ID" \ # 如果目标是课程分类ID,若为父课程ID则改用--courseid参数 --interactive=0 \ --execute done
注意事项
- 先测试单个备份文件的恢复命令,确认参数和路径正确后再执行批量操作
- 确保运行脚本的用户拥有Moodle数据目录的读写权限(可切换为
www-data用户执行:sudo -u www-data bash your_script.sh) - 若备份文件命名不符合
*.mbz,需调整通配符匹配规则
内容的提问来源于stack exchange,提问作者D-T
相关产品推荐
相关产品推荐

