#!/bin/bash set -e # Exit if error # Load configuration source "$(dirname "$0")/config.sh" # ============================================================================= # Sync function # Usage: sync_ftp PREFIX # PREFIX = PHONE or CARD (used to get config vars: ${PREFIX}_FTP_USER, etc.) # ============================================================================= sync_ftp() { local PREFIX=$1 local FTP_USER_var="${PREFIX}_FTP_USER" local FTP_PASS_var="${PREFIX}_FTP_PASS" local FTP_IP_var="${PREFIX}_FTP_IP" local FTP_PORT_var="${PREFIX}_FTP_PORT" local DESTINATION_var="${PREFIX}_DESTINATION" local LINKS_NAME="${PREFIX}_LINKS" local FTP_USER="${!FTP_USER_var}" local FTP_PASS="${!FTP_PASS_var}" local FTP_IP="${!FTP_IP_var}" local FTP_PORT="${!FTP_PORT_var}" local DESTINATION="${!DESTINATION_var}" echo "=========================================================" echo "Start synchronisation to ${DESTINATION}" echo "=========================================================" # Set permissions find "${DESTINATION}" -type f -exec chmod 644 {} \; find "${DESTINATION}" -type d -exec chmod 755 {} \; # Get links array eval "local LINKS=(\"\${$LINKS_NAME[@]}\")" # Sync each folder pair for ((i=0; i<${#LINKS[@]}; i+=2)); do local DISTANT_DIR="${LINKS[i]}" local LOCAL_DIR="${LINKS[i+1]}" echo "############################## ${DISTANT_DIR} > ${LOCAL_DIR}" mkdir -p "${DESTINATION}${LOCAL_DIR}/" if lftp ftp://"${FTP_USER}:${FTP_PASS}@${FTP_IP}:${FTP_PORT}" -e "mirror -e -x .thumbnails -x saved \"${DISTANT_DIR}\" \"${DESTINATION}${LOCAL_DIR}\" ; quit" ; then echo "Success :)" else echo 'Failed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' fi done } # ============================================================================= # Run sync for phone and card # ============================================================================= sync_ftp PHONE sync_ftp CARD