44 lines
1.1 KiB
Bash
44 lines
1.1 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
[ -d "/home/$FTPD_USER/log" ] && LOGDIR="/home/$FTPD_USER/log" || LOGDIR="/var/log"
|
||
|
LOG=$LOGDIR/lftp-sync.log
|
||
|
|
||
|
# lock to prevent multiple sync running together
|
||
|
LOCK="${TMP}/.lock-${0##*/}"
|
||
|
set -o noclobber
|
||
|
(echo "$$" > $LOCK) 2>/dev/null && trap "rm ${LOCK}; exit" HUP INT TERM || exit=255
|
||
|
set +o noclobber
|
||
|
[ ${error:-0} -ne 0 ] && echo "ERROR : $(basename $0) is LOCKED on ${HOSTNAME}. Please remove ${LOCK}" |tee -a $LOG && exit ${exit}
|
||
|
|
||
|
# check binaries
|
||
|
which lftp >/dev/null 2>&1 || exit 1
|
||
|
|
||
|
[ -n "$1" ] && FTP_HOST="$1"
|
||
|
[ -n "$2" ] && DIR_REMOTE="$2"
|
||
|
[ -n "$3" ] && DIR_LOCAL="$3"
|
||
|
[ -n "$4" ] && FILES="$4"
|
||
|
|
||
|
# check variables
|
||
|
[ -n "$FTP_HOST" ] && [ -n "$FTP_USER" ] && [ -n "$FTP_PASS" ] || exit 2
|
||
|
|
||
|
# check local path
|
||
|
[ -d ${DIR_LOCAL:-~/} ] || mkdir -p ${DIR_LOCAL:-~/} || exit 3
|
||
|
|
||
|
# Get files from the remote FTP server and remove them
|
||
|
lftp ftp://$FTP_USER:$FTP_PASS@$FTP_HOST << EOC
|
||
|
set ftp:ssl-allow yes
|
||
|
set xfer:log-file $LOG
|
||
|
mirror \
|
||
|
--Remove-source-files \
|
||
|
-i "${FILES:-.*}" \
|
||
|
${DIR_REMOTE:-/} \
|
||
|
${DIR_LOCAL:-~/}
|
||
|
quit
|
||
|
EOC
|
||
|
|
||
|
# unlock
|
||
|
rm -f "${LOCK}" 2>/dev/null && trap - HUP INT TERM
|
||
|
|
||
|
# exit
|
||
|
exit ${exit:-0}
|