feat: Replace rsync by mv

which is much faster when working on the same disk
This commit is contained in:
Sylvain Tricot 2026-07-03 10:37:03 +02:00
parent 8e6fe7f877
commit 623f8c56bf
1 changed files with 59 additions and 17 deletions

74
clean_up_accounts.sh Normal file → Executable file
View File

@ -94,6 +94,14 @@ search_ghosts() {
echo "${orphan_homes[@]}"
}
check_user_has_home() {
local login="$1"
local home_folder="/mnt/home.ipr"
if [ -d "${home_folder}/${login}" ]; then
echo "$login"
fi
}
run_remote() {
local use_sudo=0
@ -137,6 +145,24 @@ sync_folder() {
}
move_folder() {
# source folder
local src="$1"
# destination folder
local dest="$2"
# supervisor login
local supervisor="$3"
supervisor_group=$(id -gn $supervisor)
# Change ownership
chown -R $supervisor:$supervisor_group "$src"
# Create dir
mkdir -p "$dest"
# Move it
mv "$src" "$dest"
}
remove_folder() {
local folder="$1"
echo "Removing \""$1"\"..."
@ -167,12 +193,24 @@ chmod 600 "$ldap_file"
echo
echo "Please select an orphan folder in the list: "
echo
PS3="Enter an item number: "
PS3="Enter an item number (-1 for manual entry): "
while true; do
select old_user in $(run_remote "home.ipr" "search_ghosts"); do
if [[ -n "$old_user" ]]; then
echo "Selection: $old_user"
break 2
elif [[ $REPLY -eq -1 ]]; then
while true; do
read -p "MANUAL ENTRY: " ANSWER
old_user=$(run_remote "home.ipr" "check_user_has_home" "$ANSWER")
if [[ -n "$old_user" ]]; then
echo "Selection: $old_user"
break 3
else
echo "Invalid choice"
break 2
fi
done
else
echo "Invalid choice"
fi
@ -192,8 +230,8 @@ work_dest=/mnt/work/$supervisor/old_users/
home_dest=/mnt/home.ipr/$supervisor/old_users/
# Ask if we remove folders after sync
ask_yes_no "Remove \"$work_src\" and \"$home_src\" after synchronization ?" y
remove_after=$?
#ask_yes_no "Remove \"$work_src\" and \"$home_src\" after synchronization ?" y
#remove_after=$?
# Should we warn the supervisor
ask_yes_no "Email confirmation to supervisor ?" y
@ -207,11 +245,13 @@ fi
# Print a summary
echo "/!\ SUMMARY:"
echo "------------"
echo "-> \"$work_src\" will be synchronized in \"$work_dest\""
echo "-> \"$home_src\" will be synchronized in \"$home_dest\""
echo -n "-> \"$work_src\" and \"$home_src\" will be "
[[ "$remove_after" == 0 ]] && echo -n "REMOVED from " || echo -n "KEPT on "
echo "the file system."
#echo "-> \"$work_src\" will be synchronized in \"$work_dest\""
#echo "-> \"$home_src\" will be synchronized in \"$home_dest\""
echo "-> \"$work_src\" will be moved to \"$work_dest\""
echo "-> \"$home_src\" will be moved to \"$home_dest\""
#echo -n "-> \"$work_src\" and \"$home_src\" will be "
#[[ "$remove_after" == 0 ]] && echo -n "REMOVED from " || echo -n "KEPT on "
#echo "the file system."
#[[ "$delete_user" == 0 ]] && echo "-> User "$folder" WILL BE DELETED."
[[ "$send_email" == 0 ]] && echo "-> A confirmation will be sent to "$email"."
echo ""
@ -234,14 +274,16 @@ EOF
if [ "$do_it" == 0 ]; then
run_remote --sudo "home.ipr" "sync_folder" "$home_src" "$home_dest" "$supervisor"
run_remote --sudo "work.ipr" "sync_folder" "$work_src" "$work_dest" "$supervisor"
if [ "$remove_after" == 0 ]; then
ask_yes_no "Please CONFIRM that you REALLY want to delete "$work_src" and "$home_src" ?" y
confirm_removal=$?
[[ "$confirm_removal" == 0 ]] && run_remote --sudo "home.ipr" "remove_folder" "$home_src"
[[ "$confirm_removal" == 0 ]] && run_remote --sudo "work.ipr" "remove_folder" "$work_src"
fi
#run_remote --sudo "home.ipr" "sync_folder" "$home_src" "$home_dest" "$supervisor"
#run_remote --sudo "work.ipr" "sync_folder" "$work_src" "$work_dest" "$supervisor"
run_remote --sudo "home.ipr" "move_folder" "$home_src" "$home_dest" "$supervisor"
run_remote --sudo "work.ipr" "move_folder" "$work_src" "$work_dest" "$supervisor"
#if [ "$remove_after" == 0 ]; then
# ask_yes_no "Please CONFIRM that you REALLY want to delete "$work_src" and "$home_src" ?" y
# confirm_removal=$?
# [[ "$confirm_removal" == 0 ]] && run_remote --sudo "home.ipr" "remove_folder" "$home_src"
# [[ "$confirm_removal" == 0 ]] && run_remote --sudo "work.ipr" "remove_folder" "$work_src"
#fi
[[ "$send_email" == 0 ]] && run_remote "alambix" "mail_it" "$email" "$message"
update_db "$old_user"
else