save/synch_phone.sh
2021-12-06 16:46:42 +01:00

68 lines
2.1 KiB
Bash
Executable File

#!/bin/env 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 Video" "WhatsApp/WhatsApp Video")
LINK+=("WhatsApp/Media/WhatsApp Images" "WhatsApp/WhatsApp Images")
LINK+=("DCIM/Camera" "DCIM")
EXCLUDE_DIR=save
# =============================================================================
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}
fi
echo curlftpfs -r ${FTP_USER}:${FTP_PASS}@${FTP_IP}:${FTP_PORT}/ ${SOURCE}
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}"
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}