68 lines
2.1 KiB
Bash
Executable File
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}
|