mirror of
https://github.com/Febbweiss/rclone_script.git
synced 2026-03-04 22:25:36 +00:00
rclone_script-install.sh * added new configuration setting for needed connection * changed the way commands are added to other files (from ECHO to PRINTF) rclone_script.sh * added new function getAvailableConnection * changed both downloadSaves and uploadSaves so they react on that new function (check if the available connection is greater than the needed connection, else error) rclone_script-menu.sh * added new menu item to re-set the needed connection
212 lines
4.6 KiB
Bash
212 lines
4.6 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
NORMAL="\Zn"
|
|
BLACK="\Z0"
|
|
RED="\Z1"
|
|
GREEN="\Z2"
|
|
YELLOW="\Z3\Zb"
|
|
BLUE="\Z4"
|
|
MAGENTA="\Z5"
|
|
CYAN="\Z6"
|
|
WHITE="\Z7"
|
|
BOLD="\Zb"
|
|
REVERSE="\Zr"
|
|
UNDERLINE="\Zu"
|
|
|
|
|
|
# include settings file
|
|
config=~/scripts/rclone_script/rclone_script.ini
|
|
source ${config}
|
|
|
|
backtitle="RCLONE_SCRIPT menu (https://github.com/Jandalf81/rclone_script)"
|
|
|
|
|
|
####################
|
|
# HELPER FUNCTIONS #
|
|
####################
|
|
|
|
function log ()
|
|
{
|
|
severity=$1
|
|
message=$2
|
|
printf "$(date +%FT%T%:z):\t${severity}:\t${message}\n" >> ${logfile}
|
|
}
|
|
|
|
function getTypeOfRemote ()
|
|
{
|
|
# list all remotes and their type
|
|
remotes=$(rclone listremotes -l)
|
|
|
|
# get line wiht RETROPIE remote
|
|
retval=$(grep -i "^retropie:" <<< ${remotes})
|
|
|
|
remoteType="${retval#*:}"
|
|
remoteType=$(echo ${remoteType} | xargs)
|
|
}
|
|
|
|
function getStatusOfParameters ()
|
|
{
|
|
if [ "${syncOnStartStop}" == "TRUE" ]
|
|
then
|
|
statusSyncOnStartStop="${GREEN}ENABLED${NORMAL}"
|
|
else
|
|
statusSyncOnStartStop="${RED}DISABLED${NORMAL}"
|
|
fi
|
|
|
|
if [ "${showNotifications}" == "TRUE" ]
|
|
then
|
|
statusShowNotifications="${GREEN}ENABLED${NORMAL}"
|
|
else
|
|
statusShowNotifications="${RED}DISABLED${NORMAL}"
|
|
fi
|
|
|
|
case ${neededConnection} in
|
|
0) statusNeededConnection="Internet access" ;;
|
|
1) statusNeededConnection="LAN / WLAN" ;;
|
|
esac
|
|
}
|
|
|
|
function saveConfig ()
|
|
{
|
|
echo "remotebasedir=${remotebasedir}" > ${config}
|
|
echo "showNotifications=${showNotifications}" >> ${config}
|
|
echo "syncOnStartStop=${syncOnStartStop}" >> ${config}
|
|
echo "logfile=~/scripts/rclone_script/rclone_script.log" >> ${config}
|
|
echo "neededConnection=${neededConnection}" >> ${config}
|
|
echo "debug=0" >> ${config}
|
|
}
|
|
|
|
|
|
##################
|
|
# MENU FUNCTIONS #
|
|
##################
|
|
|
|
# Show the main menu. Return here anytime another dialog is closed
|
|
function main_menu ()
|
|
{
|
|
local choice="1"
|
|
|
|
while true
|
|
do
|
|
getStatusOfParameters
|
|
|
|
choice=$(dialog \
|
|
--stdout \
|
|
--colors \
|
|
--backtitle "${backtitle}" \
|
|
--title "main menu" \
|
|
--default-item "${choice}" \
|
|
--menu "\nWhat do you want to do?" 25 75 20 \
|
|
1 "Full synchronization of all savefiles and statefiles" \
|
|
2 "Toggle \"Synchronize saves on start / stop\" (currently ${statusSyncOnStartStop})" \
|
|
3 "Toggle \"Show notifications on sync\" (currently ${statusShowNotifications})" \
|
|
4 "Set needed Connection (currently \"${statusNeededConnection}\")" \
|
|
"" ""\
|
|
9 "uninstall RCLONE_SCRIPT"
|
|
)
|
|
|
|
case "$choice" in
|
|
1) doFullSync ;;
|
|
2) toggleSyncOnStartStop ;;
|
|
3) toggleShowNotifications ;;
|
|
4) setNeededConnection ;;
|
|
9) ~/scripts/rclone_script/rclone_script-uninstall.sh ;;
|
|
*) break ;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Syncs all files in both directions, only transferring newer files
|
|
function doFullSync ()
|
|
{
|
|
local tmpfile=~/scripts/rclone_script/tmp-sync.txt
|
|
|
|
getTypeOfRemote
|
|
printf "\nStarted full sync...\n\n" > ${tmpfile}
|
|
log "INFO" "Started full sync..."
|
|
|
|
# start sync process in background
|
|
{
|
|
# Download newer files from remote to local
|
|
printf "Downloading newer files from retropie:${remotebasedir} (${remoteType}) to ~/RetroPie/saves/...\n"
|
|
rclone copy retropie:${remotebasedir}/ ~/RetroPie/saves/ --update --skip-links --exclude "readme.txt" --verbose 2>&1
|
|
|
|
# Upload newer files from local to remote
|
|
printf "Uploading newer files from ~/RetroPie/saves/ to retropie:${remotebasedir} (${remoteType})...\n"
|
|
rclone copy ~/RetroPie/saves/ retropie:${remotebasedir}/ --update --skip-links --exclude "readme.txt" --verbose 2>&1
|
|
|
|
printf "Done\n"
|
|
} >> ${tmpfile} & # capture output of background process
|
|
|
|
dialog \
|
|
--backtitle "${backtitle}" \
|
|
--title "Doing full sync..." \
|
|
--colors \
|
|
--no-collapse \
|
|
--cr-wrap \
|
|
--tailbox ${tmpfile} 40 120
|
|
|
|
wait
|
|
|
|
cat ${tmpfile} >> ${logfile}
|
|
rm ${tmpfile}
|
|
|
|
log "INFO" "Finished full sync..."
|
|
}
|
|
|
|
function toggleSyncOnStartStop ()
|
|
{
|
|
if [ "${syncOnStartStop}" == "TRUE" ]
|
|
then
|
|
syncOnStartStop="FALSE"
|
|
else
|
|
syncOnStartStop="TRUE"
|
|
fi
|
|
|
|
saveConfig
|
|
}
|
|
|
|
function toggleShowNotifications ()
|
|
{
|
|
if [ "${showNotifications}" == "TRUE" ]
|
|
then
|
|
showNotifications="FALSE"
|
|
else
|
|
showNotifications="TRUE"
|
|
fi
|
|
|
|
saveConfig
|
|
}
|
|
|
|
function setNeededConnection ()
|
|
{
|
|
choice=$(dialog \
|
|
--stdout \
|
|
--colors \
|
|
--no-collapse \
|
|
--cr-wrap \
|
|
--backtitle "${backtitle}" \
|
|
--title "Needed connection" \
|
|
--default-item "${neededConnection}" \
|
|
--ok-label "Select" \
|
|
--menu "\nPlease select which type of connection will be needed for your configured remote" 20 50 5 \
|
|
0 "Internet access" \
|
|
1 "LAN / WLAN connection only"
|
|
)
|
|
|
|
case ${choice} in
|
|
0) neededConnection=0 ;;
|
|
1) neededConnection=1 ;;
|
|
*) return ;;
|
|
esac
|
|
|
|
saveConfig
|
|
}
|
|
|
|
|
|
########
|
|
# MAIN #
|
|
########
|
|
|
|
main_menu |