Você pode encontrar um exemplo de como fazer isso aqui .
Da própria página:
## upload the files
INPUT=/path/to/list_of_files_to_upload
LOCALBASE=/home/pete/website #local directory that corresponds to the root of the website
for ITEM in $(cat $INPUT); do
FILE=$(basename $ITEM)
LOCALDIR=$(dirname $ITEM)
if [ "$LOCALDIR" == "$LOCALBASE" ]; then
REMOTEDIR="/"
else
REMOTEDIR=${LOCALDIR#$LOCALBASE}
fi
## ftp starts here
ftp -v -n $SERVER <<END_OF_SESSION
user $USER $PASSW
$FILETYPE
lcd $LOCALDIR
cd $REMOTEDIR
put $FILE
bye
END_OF_SESSION
done