Files
2026-08-01 10:20:12 +02:00

59 lines
1.9 KiB
Bash
Executable File

#!/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