Skip to main content

Moosh

Bulk Backup Restore Courses#

Given a file with content as below per line which can be created based on sudo -u www-data moosh course-list | awk -F "," '{ print $1 "," $3}':

"1234","XX - XXXX/XXX/XX"

This will perform a backup to /var/backups/moodle/(courseshortcode):

while read i; do \echo $i |\sed 's/\"//g' |\sed 's/\//_/g' |\awk -F ',' '{ print "time sudo -u www-data moosh course-backup -f " "'\''/var/backups/moodle/"$2".mbz'\'' " $1}';\done < migrated_ok_id

Transfer backup files over:

rsync -ah --progress [email protected]:/var/backups/moodle/* /var/backups/moodle/.

Given a folder with backup files as below:

# ls -1 /var/backups/moodleXXXX-X-XXX_XXXX_XX.mbz

Format filenames to course shortcodes including / removing .mbz:

ls -1 /var/backups/moodle | sed s/\_/\\//g | sed s/\.mbz$//g > /home/x/restore

Get a list of course IDs for the backup courses above based on course shortcodes:

sudo -u www-data moosh course-list | grep -f /home/x/restore | awk -F ',' '{ print $1 "," $3 }' | sed s/\"//g | sed s/\\//_/g | sed s/$/.mbz/g > /home/x/restore_clean

Based on the backup files above and corresponding course ids based on course shortcodes perform the restore:

while read i; do \echo $i |\awk -F ',' '{ print "time sudo -u www-data moosh course-restore -o " "'\''/var/backups/moodle/"$2"'\'' " $1}';\done < restore_clean

Clean Backup Files

Clean backup files from all courses with extension .mbz:

/usr/local/share/moodle/dublin/moodle# sudo -u www-data moosh file-list "component='backup'" | grep mbz | sudo -u www-data moosh file-delete -s

Exporting Categories

sudo -u www-data moosh category-list |\tail -n +2 | sed 's/ \{3,\}/\"\,\"/g' |\sed 's/^/\"/g' |\sed 's/$/\"/g' |\sed 's/\,\"\"$//g' |\awk -F '\"\,\"' '{ print $1 "%" $NF "/" $2 }' |\sed s/\"//g |\awk -F "/" 'NF==3' |\awk -F "/" '{ print $1 "/" $2 "/" $3 }' |\sed 's/\/$//g' |\awk -F "/" 'NF==3' |\sort -u -t% -k2,2 |\awk -F "%" '{ print $2 "%" $1}' |\grep -v 'Top/Archive\|Training & Development - Cork\|Top/Miscellaneous\|Part-Time\|Full-Time' |\sed 's/Business Faculty/Business/g' |\sed 's/Computing Science Faculty/Computing/g' |\sed 's/Engineering Faculty/Engineering/g' |\sed 's/Graduate Business School/GBS/g' |\sed 's/Griffith Language Institute/GLI/g' |\sed 's/Law Faculty/Law/g' |\sed 's/Media Faculty/Media/g' |\sed 's/English for Academic Purposes/English/g' > /home/x/test

Resulting file format: Top/Professional Accountancy/Cork Campus%1761

Loop on the file above and create the Staff Info pages on all faculties ie Computing > Dublin > Computing-Staff Info-Campus

while read p; do \echo $p |\sed 's/\//%/g' |\sed 's/ Campus//g' |\sed 's/ campus//g' |\awk -F "%" '{ print "sudo -u www-data moosh course-create --category " $NF " --fullname=\"" $2 "-Staff Info-" $3 "\" " "\"" $2 "-Staff Info-" $3 "\" " }'; \done < /home/x/test

Loop on the file above and create the Student Info pages on all faculties ie Computing > Dublin > Computing-Student Info-Campus

while read p; do \echo $p |\sed 's/\//%/g' |\sed 's/ Campus//g' |\sed 's/ campus//g' |\awk -F "%" '{ print "sudo -u www-data moosh course-create --category " $NF " --fullname=\"" $2 "-Student Info-" $3 "\" " "\"" $2 "-Student Info-" $3 "\" " }'; \done < /home/x/test

Set Course ID

Based on a list of course ids will set their idnumber field as Faculty$(IDOFPARENTFACULTY)_Campus

#!/bin/bash
while read p;do        a=$(echo $p)        b=$(echo "Faculty")
        #Returns faculty id based on course id of info page        c=$(su -c "psql -U postgres -d moodle2018-utf8 -t -c \"SELECT MC2.id FROM mdl_course LEFT JOIN mdl_course_categories MC1 ON MC1.id=mdl_course.category LEFT JOIN mdl_course_categories MC2 ON MC2.id=MC1.parent LEFT JOIN mdl_course_categories MC3 ON MC3.id=MC2.parent LEFT JOIN mdl_course_categories MC4 ON MC4.id=MC3.parent WHERE mdl_course.id='$p';\"" postgres)        #Returns campus name based on course id of info page        d=$(su -c "psql -U postgres -d moodle2018-utf8 -t -c \"SELECT MC1.name FROM mdl_course LEFT JOIN mdl_course_categories MC1 ON MC1.id=mdl_course.category LEFT JOIN mdl_course_categories MC2 ON MC2.id=MC1.parent LEFT JOIN mdl_course_categories MC3 ON MC3.id=MC2.parent LEFT JOIN mdl_course_categories MC4 ON MC4.id=MC3.parent WHERE mdl_course.id='$p';\"" postgres)
                echo $a,$b,$c,$d >> output.dmpdone<test2
cat output.dmp | sed s/"Dublin Campus"/D/g | sed s/"Cork Campus"/C/g | sed s/"Limerick Campus"/L/g | sed s/"Moscow Campus"/M/g | sed s/"Waterford Campus"/W/g | sed s/"Virtual Campus"/V/g | sed s/"Dublin Tara St"/1/g | sed s/"Sarajevo Campus"/$/g | sed s/" "//g> clean2
cat clean2 | awk -F "," '{ print "update mdl_course set idnumber = '\''" $2 $3 "_" $4 "'\'' where id = '\''" $1 "'\'';"}'