@@ -25,15 +25,15 @@ NC='\033[0m' # No Color
25
25
26
26
if ! command -v parallel & > /dev/null
27
27
then
28
- echo -e " ${RED} parallel could not be found${NC} "
29
- exit
28
+ echo -e " ${RED} parallel could not be found${NC} "
29
+ exit
30
30
fi
31
31
32
32
if [[ " $1 " == --parallel= * ]]; then
33
- PARALLEL_RSYNC=" ${1##* =} "
34
- shift
33
+ PARALLEL_RSYNC=" ${1##* =} "
34
+ shift
35
35
else
36
- PARALLEL_RSYNC=$( nproc 2> /dev/null || echo 10)
36
+ PARALLEL_RSYNC=$( nproc 2> /dev/null || echo 10)
37
37
fi
38
38
echo -e " ${GREEN} INFO: Using up to ${PARALLEL_RSYNC} processes for transfer ...${NC} "
39
39
@@ -42,7 +42,8 @@ trap 'rm -rf "${TMPDIR}"' EXIT
42
42
43
43
echo -e " ${GREEN} INFO: Determining file list for transfer ...${NC} "
44
44
# sorted by size (descending)
45
- rsync " $@ " --out-format=" %l %n" --no-v --quiet --dry-run 2> /dev/null \
45
+ rsync " $@ " --out-format=" %l %n" --no-v --dry-run 2> /dev/null \
46
+ | grep -v " sending incremental file list" \
46
47
| sort --numeric-sort --reverse \
47
48
> " ${TMPDIR} /files.all"
48
49
@@ -51,8 +52,8 @@ TOTAL_FILES=$(wc -l < "${TMPDIR}/files.all")
51
52
TOTAL_SIZE=$( awk ' {ts+=$1}END{printf "%.0f", ts}' < " ${TMPDIR} /files.all" )
52
53
echo -e " ${GREEN} INFO: ${TOTAL_FILES} ($(( TOTAL_SIZE/ 1024 ** 2 )) MB) files to transfer.${NC} "
53
54
if [ " ${TOTAL_FILES} " -eq " 0" ]; then
54
- echo -e " ${ORANGE} WARN: Nothing to transfer :)${NC} "
55
- exit 0
55
+ echo -e " ${ORANGE} WARN: Nothing to transfer :)${NC} "
56
+ exit 0
56
57
fi
57
58
58
59
function array_min {
@@ -77,7 +78,7 @@ function array_min {
77
78
echo -e " ${GREEN} INFO: Distributing files among chunks ...${NC} "
78
79
# declare chunk-size array
79
80
for (( I = 0 ; I < PARALLEL_RSYNC ; I++ )) ; do
80
- CHUNKS[" ${I} " ]=0
81
+ CHUNKS[" ${I} " ]=0
81
82
done
82
83
83
84
# add each file to the emptiest chunk, so they're as balanced by size as possible
@@ -104,7 +105,7 @@ for ((I = 1 ; I < PARALLEL_RSYNC ; I+=2 )); do
104
105
continue
105
106
fi
106
107
107
- tac " ${TMPDIR} /chunk.${I} " > " ${TMPDIR} /chunk.${I} .r" && mv " ${TMPDIR} /chunk.${I} .r" " ${TMPDIR} /chunk.${I} "
108
+ tac " ${TMPDIR} /chunk.${I} " > " ${TMPDIR} /chunk.${I} .r" && mv " ${TMPDIR} /chunk.${I} .r" " ${TMPDIR} /chunk.${I} "
108
109
done
109
110
110
111
echo -e " ${GREEN} DONE (${SECONDS} s)${NC} "
0 commit comments