Pipeline FTP uploads all files instead of only changed

My goal is to use FTP to upload only changed files when there is a merge into the dev branch. I have set up a pipeline with the following in the gitlab-ci.yml:

image: mwienk/docker-lftp:latest
upload:
  stage: deploy
  script:
    - lftp -e "set ssl:verify-certificate no; set ftp:ssl-allow no; mirror -X .* -X .*/ --reverse --only-newer --verbose source-dir/ dest-dir; exit;" -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST
  only:
    - develop
  when: on_success

The trigger and FTP login work correctly, but it always deletes and then uploads all the files in the source-dir. Even though some of the files shown in the dev branch on GitLab are older than those on the server, they are not skipped.

I appreciate any suggestions.

I want to know the solution

The key is using -Rev ./ -this part points to root dir of repo

image: ubuntu:18.04
before_script:
  - apt-get update -qy
  - apt-get install -y lftp
deploy:
  script:
    # Sync to FTP test
    - lftp -e "set ftp:ssl-allow no; open $HOST; user $FTP_USERNAME $FTP_PASSWORD; mirror -Rev ./ /remoteFTPFolder --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"