add mover function to move the shares off a selected array disk onto other array disks

This commit is contained in:
Tom Mortensen
2024-05-26 12:15:49 -07:00
parent e29de3c3e5
commit 45c1cab4b5
+63 -4
View File
@@ -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] <disk_name>"
echo " $0 stop|status"
echo " <disk_name> must match pattern 'disk[0-9]*'"
exit 1
}
# validate disk name
validate_disk() {
if [[ ! "$1" =~ ^disk[0-9]+$ ]]; then
echo "Error: <disk_name> 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