Skip to content

Commit 7c508bd

Browse files
feat(dupe.sh) - revamp and add summary etc (#31)
Co-authored-by: Drazzilb <[email protected]>
1 parent 2ff5202 commit 7c508bd

File tree

1 file changed

+48
-13
lines changed

1 file changed

+48
-13
lines changed

dupe.sh

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,59 @@ else
1919
echo ".env file not found in script directory ($ENV_PATH)"
2020
fi
2121

22-
# Variables
22+
# Default Variables
2323
JDUPES_OUTPUT_LOG=${JDUPES_OUTPUT_LOG:-"/mnt/data/jdupes.log"}
2424
JDUPES_SOURCE_DIR=${JDUPES_SOURCE_DIR:-"/mnt/data/media/"}
2525
JDUPES_DESTINATION_DIR=${JDUPES_DESTINATION_DIR:-"/mnt/data/torrents/"}
2626
JDUPES_HASH_DB=${JDUPES_HASH_DB:-"/.config/jdupes_hashdb"}
27-
## Secret Variables
2827
JDUPES_COMMAND=${JDUPES_COMMAND:-"/usr/bin/jdupes"}
2928
JDUPES_EXCLUDE_DIRS=${JDUPES_EXCLUDE_DIRS:-"-X nostr:.RecycleBin -X nostr:.trash"}
3029
JDUPES_INCLUDE_EXT=${JDUPES_INCLUDE_EXT:-"mp4,mkv,avi"}
30+
DEBUG=${DEBUG:-"false"}
3131

32-
# Logging the start of the operation
33-
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
34-
echo "[$timestamp] Duplicate search started for $JDUPES_SOURCE_DIR and $JDUPES_DESTINATION_DIR." >>"$JDUPES_OUTPUT_LOG"
35-
echo "command is"
36-
# Running jdupes with the loaded environment variables
37-
echo "$JDUPES_COMMAND" "$JDUPES_EXCLUDE_DIRS" -X onlyext:"$JDUPES_INCLUDE_EXT" -L -r -Z -y "$JDUPES_HASH_DB" "$JDUPES_SOURCE_DIR" "$JDUPES_DESTINATION_DIR"
38-
"$JDUPES_COMMAND" "$JDUPES_EXCLUDE_DIRS" -X onlyext:"$JDUPES_INCLUDE_EXT" -L -r -Z -y "$JDUPES_HASH_DB" "$JDUPES_SOURCE_DIR" "$JDUPES_DESTINATION_DIR" >>"$JDUPES_OUTPUT_LOG"
39-
40-
# Logging the completion of the operation
41-
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
42-
echo "[$timestamp] Duplicate search completed for $JDUPES_SOURCE_DIR and $JDUPES_DESTINATION_DIR." >>"$JDUPES_OUTPUT_LOG"
32+
find_duplicates() {
33+
local log_file="$JDUPES_OUTPUT_LOG"
34+
local start_time=$(date +%s)
35+
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Duplicate search started" | tee -a "$log_file"
36+
37+
if [ "$DEBUG" == "true" ]; then
38+
echo "Running jdupes with:" | tee -a "$log_file"
39+
echo "$JDUPES_COMMAND $JDUPES_EXCLUDE_DIRS -X onlyext:$JDUPES_INCLUDE_EXT -r -M -y $JDUPES_HASH_DB $JDUPES_SOURCE_DIR $JDUPES_DESTINATION_DIR" | tee -a "$log_file"
40+
fi
41+
42+
local results
43+
results=$("$JDUPES_COMMAND" "$JDUPES_EXCLUDE_DIRS" -X onlyext:"$JDUPES_INCLUDE_EXT" -r -M -y "$JDUPES_HASH_DB" "$JDUPES_SOURCE_DIR" "$JDUPES_DESTINATION_DIR")
44+
45+
if [[ $results != *"No duplicates found."* ]]; then
46+
"$JDUPES_COMMAND" "$JDUPES_EXCLUDE_DIRS" -X onlyext:"$JDUPES_INCLUDE_EXT" -r -L -y "$JDUPES_HASH_DB" "$JDUPES_SOURCE_DIR" "$JDUPES_DESTINATION_DIR" >>"$log_file"
47+
fi
48+
49+
if [ "$DEBUG" == "true" ]; then
50+
echo -e "jdupes output: ${results}" | tee -a "$log_file"
51+
fi
52+
53+
parse_jdupes_output "$results" "$log_file"
54+
local finish_time=$(date +%s)
55+
local run_time=$((finish_time - start_time))
56+
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Duplicate search completed in ${run_time}s" | tee -a "$log_file"
57+
}
58+
59+
parse_jdupes_output() {
60+
local results="$1"
61+
local log_file="$2"
62+
63+
if [[ $results != *"No duplicates found."* ]]; then
64+
field_message="❌ Unlinked files discovered..."
65+
parsed_log=$(echo "$results" | awk -F/ '{print $NF}' | sort -u)
66+
else
67+
field_message="✅ No unlinked files discovered..."
68+
parsed_log="No hardlinks created"
69+
fi
70+
71+
if [ "$DEBUG" == "true" ]; then
72+
echo -e "$field_message" | tee -a "$log_file"
73+
echo -e "Parsed log: ${parsed_log}" | tee -a "$log_file"
74+
fi
75+
}
76+
77+
find_duplicates

0 commit comments

Comments
 (0)