All I see are commercial implementations such as http://www.nubridges.com/solutions/ftp_linux.htm
this program can scan a directory and when it sees new files in the directory that can trigger a process to occur, such as uploading the files to another location.
I'm sure there are free solutions out there but I'm not finding them at the moment, I'm thinking you could write a script to do this yourself as well..
here's an example I found..
Here's a shell script to do the entire thing -- hopefully I've understood all your requirements correctly.
# This script assumes that the files you want to transfer are in a
# directory called /mypath/mydirectory, the directory you want to archive
# them to is /mypath/myarchivedir, the remote machine you want to connect
# to is called remotehost, your login to that machine is username
# with password password, and you want to put the files in a directory
# called /remotepath/remotedirectory -- you should replace these with
# the appropriate information, of course. It's also assumed that you
# want to transfer/remove ALL files in the source directory.
# All log information for this process is directed to the file
# log$$.log in the /mypath/myarchivedir directory -- $$ is the shell
# variable for the process ID of the current process, so the file will
# be named something like log12345.log. This is a simple way to create
# a fairly unique filename for the log.
# Check to see if the directory is empty by checking to see if the
# result of an ls of the directory is null. If so, write a message
# out to the log and exit.
if [[ -z `ls /mypath/mydirectory` ]]; then
echo "Directory empty, exiting." > /mypath/myarchivedir/log$$.log
# Write the contents of the directory out to the log.
ls -lt /mypath/mydirectory >> /mypath/myarchivedir/log$$.log
# Copy the contents of the source directory to the archive
# directory, using the -p option to preserve file modification times.
cp -p /mypath/mydirectory/* /mypath/myarchivedir
# Connect to the machine remotehost via ftp using these flags:
# -i Turns off prompting so that multiple files can be transferred
# without user intervention.
# -n Turns off checking for automatic logins set up in .netrc.
# -v Turns on verbose mode.
# Standard output from the ftp command is appended to the log file;
# standard error is also sent to the log file using 2>&1.
# The << symbols after the command indicate the beginning of a "here
# document" -- a section of text that is to be sent to output exactly as
# written. The END after << signifies that the end of the here document
# will be at the next appearance of END.
# Within the here document are the commands to be sent to the ftp server:
# user username password Logs in to the server as user username
# with password password.
# lcd /mypath/mydirectory Changes to the local directory containing
# the files to be uploaded.
# cd /remotepath/remotedir Changes to the remote directory the files
# are to be transferred to.
# mput * Transfers all files in the current local directory.
# close Closes the connection to the server.
# bye Exits the ftp process.
ftp -inv remotehost >> /mypath/myarchivedir/log$$.log 2>&1 << END
user username password
# Remove all files in /mypath/mydirectory once they've been transferred.