-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathrccheck
83 lines (68 loc) · 3.02 KB
/
rccheck
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env bash
#*****************************************************************************************
# Check if rclone remotes exist and read/write/delete status w SAs where authed
#*****************************************************************************************
vars_for_check() {
COUNT=$(<$JSCOUNT)
ret=8
SAs=$MAXJS
unset bak
dsaf="--drive-service-account-file=$JSDIR/"
dutf="--drive-use-trash=false"
srcdest=("$src" "$dest")
rem=(${src%:*} ${dest%:*})
rem_sa=(true true)
rem_td=(true true)
CRYPT=(false false)
SRC=`sed 's/-/_/g' <<<${rem[0]^^}`
DEST=`sed 's/-/_/g' <<<${rem[1]^^}`
if "$EXIT_ON_BAD_PAIR";then CON_EX="exit";else CON_EX="return 1";fi
if ${MAKE_DESTDIR,,};then rclone mkdir "$dest"; fi
}
check_remotes()
{ vars_for_check
if ${CHECK_REMOTES,,};then . msg ck_rem
# In the for loop below 0 = source and 1 = destination
for i in 0 1; do
if `rclone config show "${rem[$i]}" &>/dev/null`
then . msg ok_cfg "${rem[$i]}"
else . msg rc_bad "${rem[$i]}";$CON_EX;fi
if `rclone config show "${rem[$i]}" | grep "type = crypt" &>/dev/null`
then CRYPT[$i]=true;. msg ok_crypt "${rem[$i]}";fi
if [ `rclone config show "${rem[$i]}" | grep team_drive | wc -m` -gt 18 ]
then . msg ok_td "${rem[$i]}"
elif [ CRYPT[$i] ]
then cryp_rem=`rclone config show "${rem[$i]}" | grep remote | cut -f3 -d ' ' | cut -f1 -d ':'`
if [ `rclone config show "$cryp_rem" | grep team_drive | wc -m` -gt 18 ]
then . msg ok_td "${rem[$i]}";fi
else rem_td[$i]=false;. msg not_td "${rem[$i]}"
fi
if `rclone lsd "${srcdest[$i]}" "$dsaf$COUNT.json" &>/dev/null` && ${rem_td[$i]}
then . msg ok_sa "${srcdest[$i]}";dsaff="$dsaf$COUNT.json"
else rem_sa[$i]=false;unset dsaff;. msg no_sa "${srcdest[$i]}";fi
if `rclone lsd "${srcdest[$i]}" $dsaff &>/dev/null`
then . msg ok_read "${srcdest[$i]}"
else . msg fail_read "${srcdest[$i]}";$CON_EX;fi
done
if rclone touch "${rem[1]}:/sasync.bin" $dsaff &>/dev/null
then . msg ok_write "${rem[1]}";sleep 3s;else . msg fail_write "${rem[1]}";$CON_EX;fi
if rclone deletefile -q "${rem[1]}:/sasync.bin" $dsaff $dutf &>/dev/null
then . msg ok_del "${rem[1]}";else . msg fail_del "${rem[1]}";fi
fi
if ${PRE_CLEAN_TDS,,};then clean_remotes;fi
if ${BAK_FILES,,} && [ ! -z "${dest#*:}" ] && [ ! $sync == "move" ];then
bak=$( sed "s/:/:$BAK_DIR\//g"<<<"$dest" )
bak="--backup-dir=""$bak";fi
if ${CALC_SIZE,,};then sacalc
if [[ $srcsize -eq 0 ]];then . msg src_zero && return 1;fi
if [[ $srcsize == $destsize ]];then . msg skip2next && return 1;fi
if [[ $destsize != 0 ]];then sd_ratio=$(( 100 * $srcsize / $destsize ))
if [[ $sd_ratio -le $DIFF_LIMIT ]];then . msg srcdest_ratio_bad;return 1
else . msg srcdest_ratio_ok;fi
fi
fi
if ${FILE_COMPARE,,};then . msg file_cmp
if rclone check "$src" "$dest" --one-way --fast-list &> >(grep '0 differences')
then . msg skip2next;return 1;fi;fi
. msg ck_fin
}