Primeiro, você cria uma tarefa cron que é invocada na hora em que você deseja que o backup seja criado Depois que o backup é criado, o script gera o script lftp para fazer o upload do arquivo via FTP.
#!/bin/bash
# have some path predefined for backup unless one is provided as first argument
BACKUP_DIR="/tmp/test"
# construct name for our archive
TIME=$(date +%d-%m-%Y-%H-%M)
if [ $1 ]; then
BACKUP_DIR="$1"
fi
echo "Backing up dir ... $BACKUP_DIR"
tar czvfp $TIME.tar.gz $BACKUP_DIR
# create upload script for lftp
cat <<EOF> lftp.upload.script
open ftp.server.tld
user username password
cd /target/directory
lcd /local/dir/where/tar/gz/archive/is
mput $TIME.tar.gz
exit
EOF
# start backup using lftp and script we created; if all went well print simple message and clean up
lftp -f lftp.upload.script && ( echo Upload successfull ; rm lftp.upload.script )