#!/usr/bin/env bash # Configure this script in a cron job to run some common cleanup operations # Set the Environment variable GALAXY_CONFIG_FILE to use a custom galaxy config file. set -e display_help(){ scriptname=`basename $0` printf "./$scriptname [--help] [--no-dry-run] [--days 10] Will run the galaxy cleanup scripts in the recommend order. By default a 'dry-run' is started. Specify --no-dry-run to do the actual cleanup. --help Show this help --dry-run|--no-dry-run Dry run(default), will only print out what the scripts would have done. Specify --no-dry-run to do the actual cleanup. --days Number of days to use as a cut off; do not act on objects updated more recently than this " } # number of days to use as a cut off; do not act on objects updated more recently than this DAYS=10 DRYRUN=true while : do case "$1" in --no-dry-run) DRYRUN=false shift ;; --dry-run ) # default DRYRUN=true shift ;; --days ) DAYS="$2" shift; shift ;; -h ) display_help exit 1 ;; --help ) display_help exit 1 ;; "") break ;; *) shift ;; esac done SCRIPTLOCATION="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source ${SCRIPTLOCATION}/common_startup_variables.sh if [ "$DRYRUN" = true ]; then MODE="--info_only" else MODE="-r" fi MAINTENANCE_LOG="$SCRIPTLOCATION/../maintenance.log" COMMANDS=( "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --delete_userless_histories >> $MAINTENANCE_LOG" "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --purge_histories >> $MAINTENANCE_LOG" "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --purge_datasets >> $MAINTENANCE_LOG" "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --purge_folders >> $MAINTENANCE_LOG" "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --delete_datasets >> $MAINTENANCE_LOG" "python $SCRIPTLOCATION/cleanup_datasets/cleanup_datasets.py $GALAXY_CONFIG_FILE -d $DAYS $MODE --purge_datasets >> $MAINTENANCE_LOG") printf "\nDry run: $DRYRUN\nDays: $DAYS\n\n" echo "Will run following commands and output in $MAINTENANCE_LOG" for (( i = 0; i < ${#COMMANDS[@]} ; i++ )); do echo "${COMMANDS[$i]}" done if [ "$DRYRUN" = false ]; then echo "python $SCRIPTLOCATION/set_user_disk_usage.py >> $MAINTENANCE_LOG" fi # Run the commands cd $SCRIPTLOCATION/../ for (( i = 0; i < ${#COMMANDS[@]} ; i++ )); do eval "${COMMANDS[$i]}" done if [ "$DRYRUN" = false ]; then python $SCRIPTLOCATION/set_user_disk_usage.py >> $MAINTENANCE_LOG fi