Skip to content

Instantly share code, notes, and snippets.

@bvenkatr
Created December 30, 2019 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bvenkatr/830ffcda48ac49b343456ae24478e30f to your computer and use it in GitHub Desktop.
Save bvenkatr/830ffcda48ac49b343456ae24478e30f to your computer and use it in GitHub Desktop.
Taking edx courses backup
#!/usr/bin/env bash
######################################################
#
# https://wiki.bash-hackers.org/howto/getopts_tutorial
# https://sookocheff.com/post/bash/parsing-bash-script-arguments-with-shopts/
######################################################
function help() {
echo -e "EdX Course Backup Script\n"
echo -e "Usage: $0 [PARAMETERS]..."
echo -e "\nParameters:"
echo -e "\t-o absolute folder path where backup will dumped"
exit 1;
}
#Check the shell
if [ -z "$BASH_VERSION" ]; then
echo -e "Error: this script requires the BASH shell!"
exit 1
fi
OUTPUT_PATH=""
# In Silent Mode, that is disable the verbose error handling by preceding the whole option string with a colon (:)
while getopts ':ho:' opt
do
case $opt in
o)
OUTPUT_PATH=$OPTARG
;;
h)
help
;;
\?) # In Silent Mode, opt is set to ? if invalid option passed and $OPTARG is set to the (invalid) option character
echo "Invalid option: -$OPTARG" >&2
;;
:) # In Silent Mode, opt is set to : if required argument not found and $OPTARG contains the option-character in question
echo "Option -$OPTARG requires an argument." >&2
;;
esac
done
if ((OPTIND == 1))
then
echo "No options specified"
help
exit 1
fi
if [ ! -d $OUTPUT_PATH ]; then
echo "Output path $OUTPUT_PATH doesn't exist, so creating it"
mkdir -p $OUTPUT_PATH
fi
COURSE_BACKUP_NAME="edx_course_backup_at_$(date +%F)"
COURSE_OUT_PATH=$OUTPUT_PATH/$COURSE_BACKUP_NAME
mkdir -p $COURSE_OUT_PATH
echo "COURSE_OUT_PATH is $COURSE_OUT_PATH"
echo "Taking all courses backup....."
/data/open-edx/apps/edx/bin/python.edxapp \
/data/open-edx/apps/edx/edx-platform/manage.py cms \
--settings bitnami \
export_all_courses $COURSE_OUT_PATH
echo "Done."
echo "Compressing the backup..."
tar fcz ${COURSE_OUT_PATH}.tar.gz -C /$OUTPUT_PATH $COURSE_BACKUP_NAME
echo "Done."
echo "Removing the uncompressed one $COURSE_OUT_PATH"
rm -rf $COURSE_OUT_PATH
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment