Files
save/synch_phone.sh
T
2022-09-01 16:52:26 +02:00

70 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e # Exit if error
# This script synchronizes data from FTP into local folder:
# - remove file that do not exist anymore in the FTP (rsync --delete flag)
# - do not update file (a file that already existing locally will be ignore, rsync --ignore-existing flag))
#
# No modification will be done in the FTP, as the mount is done in read only mode.
#
# Configuration is gathered at the beginning of the script.
# =============================================================================
# Configuration
# =============================================================================
FTP_USER=ftp
FTP_PASS=ftp
FTP_IP=192.168.1.21
FTP_PORT=2121
SOURCE=tmp_phone-ftp/ # Temporary local folder, to mount FTP folder
DESTINATION=phone/ # Local folder where to save files
LINK=()
LINK+=("WhatsApp/Media" "WhatsApp")
LINK+=("DCIM" "DCIM")
EXCLUDE_DIR=saved
# =============================================================================
echo "========================================================================"
echo SOURCE: ${SOURCE}
echo DESTINATION: ${DESTINATION}
echo "========================================================================"
mkdir -p ${DESTINATION}
echo "Mount FTP folder in ${SOURCE} in read-only"
if [ ! -d ${SOURCE} ]; then
mkdir -p ${SOURCE}
curlftpfs -r ${FTP_USER}:${FTP_PASS}@${FTP_IP}:${FTP_PORT}/ ${SOURCE}
echo curlftpfs -r ${FTP_USER}:${FTP_PASS}@${FTP_IP}:${FTP_PORT}/ ${SOURCE}
fi
echo "Start synchronisation"
for ((i=0; i<${#LINK[@]}; i+=2)); do
SOURCE_DIR=${LINK[i]}
DESTINATION_DIR=${LINK[i+1]}
echo "############################## ${SOURCE_DIR} > ${DESTINATION_DIR}"
if [ ! -d "${SOURCE}/${SOURCE_DIR}" ]; then
echo "WARNING - cannot find ${SOURCE}/${SOURCE_DIR}"
continue
fi
mkdir -p "${DESTINATION}/${DESTINATION_DIR}/"
# WARNING with source, rsync do: copy folder with src but only folder content with src/
rsync -rv --delete --ignore-existing --exclude "${EXCLUDE_DIR}" "${SOURCE}/${SOURCE_DIR}/" "${DESTINATION}/${DESTINATION_DIR}/"
done
# Wait that rsync free FTP mounted folder
sleep 1
echo "Remove mounted ${SOURCE}"
fusermount -u ${SOURCE}
rmdir ${SOURCE}