From 45c1cab4b526c40d55086b74e517279afe444562 Mon Sep 17 00:00:00 2001 From: Tom Mortensen Date: Sun, 26 May 2024 12:15:49 -0700 Subject: [PATCH] add mover function to move the shares off a selected array disk onto other array disks --- sbin/mover | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/sbin/mover b/sbin/mover index cfc8d70e2..55aee5f07 100755 --- a/sbin/mover +++ b/sbin/mover @@ -73,6 +73,34 @@ start() { echo "mover: finished" } +empty() { + if [ -f $PIDFILE ]; then + if ps h $(cat $PIDFILE) | grep mover ; then + echo "mover: already running" + exit 1 + fi + fi + + echo $$ >/var/run/mover.pid + echo "mover: started" + + shopt -s nullglob + + for SHAREPATH in /mnt/$DISK/* ; do + find "$SHAREPATH" -depth 2>/dev/null | /usr/libexec/unraid/move -e $DEBUGGING + done + + # output list of files which could not be moved + shopt -s dotglob ; FILES=/mnt/$DISK/* ; shopt -u dotglob + if [ ${#files[@]} -gt 2 ]; then + echo "mover: not moved:" + ls -1 --almost-all --recursive /mnt/$DISK + fi + + rm -f $PIDFILE + echo "mover: finished" +} + killtree() { local pid=$1 child @@ -93,9 +121,42 @@ stop() { echo "mover: stopped" } +# Function to display usage +usage() { + echo "Usage: $0 start [-e] " + echo " $0 stop|status" + echo " must match pattern 'disk[0-9]*'" + exit 1 +} + +# validate disk name +validate_disk() { + if [[ ! "$1" =~ ^disk[0-9]+$ ]]; then + echo "Error: must match pattern 'disk[0-9]*'" + usage + fi +} + +if [ "$#" -lt 1 ]; then + usage + exit 1 +fi + case $1 in start) - start + if [ -z "$2" ]; then + start + elif [ "$2" == "-e" ]; then + if [ -z "$3" ]; then + usage + else + validate_disk "$3" + DISK="$3" + empty + fi + else + usage + fi ;; stop) stop @@ -104,8 +165,6 @@ status) [ -f $PIDFILE ] ;; *) - # Default is "start" - # echo "Usage: $0 (start|stop|status)" - start + usage ;; esac