-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrclone_tool.sh
executable file
·150 lines (127 loc) · 4.09 KB
/
rclone_tool.sh
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
# set -x
set -e -o pipefail
MACHINE_TYPE=$(arch)||true
PROG_TMP_FOLDER="/tmp"
RCLONE_VER="1.63.1"
PROG_URL="https://downloads.rclone.org/v${RCLONE_VER}/rclone-v${RCLONE_VER}-linux-arm-v6.zip"
PROG_TMP_FILE="${PROG_TMP_FOLDER}/rclone-v${RCLONE_VER}-linux-arm-v6/rclone"
if [ "${MACHINE_TYPE}" = "x86_64" ]
then
PROG_URL="https://downloads.rclone.org/v${RCLONE_VER}/rclone-v${RCLONE_VER}-linux-amd64.zip"
PROG_TMP_FILE="${PROG_TMP_FOLDER}/rclone-v${RCLONE_VER}-linux-amd64/rclone"
fi
PROG_BIN_FOLDER="/usr/bin"
PROG_TMP_ZIP_FILE="${PROG_TMP_FOLDER}/rclone.zip"
PROG_PY_UNZIP_TOOL="${PROG_TMP_FOLDER}/unzip_rclone.py"
PROG_DEST_FILE="${PROG_BIN_FOLDER}/rclone"
PROG_LOCAL_CONF="${PROG_BIN_FOLDER}/rclone_local.config"
PROG_CONF="${PROG_BIN_FOLDER}/rclone.config"
RCLONE_DEST=""
RCLONE_OP=""
rm -f ${PROG_PY_UNZIP_TOOL}
cat << EOF > ${PROG_PY_UNZIP_TOOL}
import zipfile
with zipfile.ZipFile('${PROG_TMP_ZIP_FILE}', "r") as z:
z.extractall("/tmp")
EOF
run() {
if [ ! -f "${PROG_LOCAL_CONF}" ] || [ ! -f "${PROG_CONF}" ];
then
echo "Missing configuration files. Plese run command: 'rclone_tool config'."
exit 1
fi
if [ "${RCLONE_OP}" = "" ]
then
echo "Missing Rclone type action ('copy' or 'move' or 'sync')."
exit 1
fi
if [ "${RCLONE_DEST}" = "" ]
then
echo "Missing Rclone destination name."
exit 1
fi
echo Moving files to remote folder...
source ${PROG_LOCAL_CONF}
if [ "${RCLONE_OP}" = "move" ]
then
${PROG_DEST_FILE} ${RCLONE_OP} ${CAM_FOLDER} ${RCLONE_DEST}:${REMOTE_FOLDER} --delete-empty-src-dirs --skip-links --log-file /var/log/rclone.log --log-level INFO --config ${PROG_CONF}
fi
if [ "${RCLONE_OP}" = "copy" ]
then
${PROG_DEST_FILE} ${RCLONE_OP} ${CAM_FOLDER} ${RCLONE_DEST}:${REMOTE_FOLDER} --skip-links --log-file /var/log/rclone.log --log-level INFO --config ${PROG_CONF}
fi
if [ "${RCLONE_OP}" = "sync" ]
then
${PROG_DEST_FILE} ${RCLONE_OP} ${CAM_FOLDER} ${RCLONE_DEST}:${REMOTE_FOLDER} --skip-links --log-file /var/log/rclone.log --log-level INFO --config ${PROG_CONF}
fi
}
install() {
if [ ! -f "${PROG_TMP_FOLDER}/rclone_tool.sh" ]
then
echo "Plese run:"
echo "curl -L https://raw.githubusercontent.com/goldfix/motioneyeos_ext/main/src/rclone_tool.sh -o /tmp/rclone_tool.sh && bash /tmp/rclone_tool.sh install"
echo "to reinstall."
exit 1
fi
mount -o remount,rw / || true
mount -o remount,rw /boot || true
rm -f ${PROG_TMP_ZIP_FILE}
rm -f ${PROG_DEST_FILE}
rm -f ${PROG_DEST_FILE}_tool.sh
curl ${PROG_URL} -o ${PROG_TMP_ZIP_FILE}
python ${PROG_PY_UNZIP_TOOL}
chmod ugo+rx ${PROG_TMP_FILE}
cp ${PROG_TMP_FILE} /usr/bin
chmod ugo+rx ${PROG_TMP_FOLDER}/rclone_tool.sh
cp ${PROG_TMP_FOLDER}/rclone_tool.sh ${PROG_BIN_FOLDER}/rclone_tool.sh
echo Run \'rclone_tool.sh config\' to configure Rclone.
}
config() {
echo
echo Configure rclone tool.
echo
${PROG_DEST_FILE} config --config ${PROG_CONF}
echo
echo Configure local folders.
echo
echo Local data output Camera Folder \(if empty default: /data/output/Camera1\)?
read CAM_FOLDER
if [ "${CAM_FOLDER}" = "" ]
then
CAM_FOLDER=/data/output/Camera1
fi
echo Output Camera Folder is: ${CAM_FOLDER}
TMP="/Motioneyeos/${HOSTNAME}"
echo Remote folder \(if empty default: ${TMP}\)?
read REMOTE_FOLDER
if [ "${REMOTE_FOLDER}" = "" ]
then
REMOTE_FOLDER=${TMP}
fi
echo Remote Folder is: ${REMOTE_FOLDER}
echo CAM_FOLDER=${CAM_FOLDER} > ${PROG_LOCAL_CONF}
echo REMOTE_FOLDER=${REMOTE_FOLDER} >> ${PROG_LOCAL_CONF}
chmod ug+r ${PROG_LOCAL_CONF}
chmod ug+r ${PROG_CONF}
chmod ugo+rx ${PROG_DEST_FILE}
chmod ugo+rx ${PROG_BIN_FOLDER}/rclone_tool.sh
}
case "$1" in
run)
RCLONE_OP=${2}
RCLONE_DEST=${3}
run
;;
config)
config
;;
install)
install
;;
*)
echo "Usage: $0 {install|config|run <copy|move> <RCLONE_NAME_DEST>}"
exit 1
;;
esac
exit $?