Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for an FTP-client which allows me to easily "upload files that have been modified since last upload". (Or "synchronize" directories based on modification date.)

I'm on Ubuntu.

So far I've tried gnome-commander, gftp, midnight commander.

(I know I could mount the ftp filesystem and use cp -u but I have lots of bad experience from FTP-mounted file systems.)

share|improve this question

I use FileZilla, but it really sounds like you want to use Rsync... without SSH, though you could use lftp.

from the man page: mirror [OPTS] [source [target]]

 Mirror specified source directory to local target directory.
 If  target directory ends with a slash, the source base name
 is appended to target directory name. Source  and/or  target
 can be URLs pointing to directories.

      -c, --continue      continue a mirror job if possible
      -e, --delete        delete files not present at remote site
          --delete-first       delete old files before transferring new ones
          --depth-first        descend into subdirectories before transferring files
      -s, --allow-suid         set suid/sgid bits according to remote site
          --allow-chown   try to set owner and group on files
          --ascii         use ascii mode transfers (implies --ignore-size)
          --ignore-time        ignore time when deciding whether to download
          --ignore-size        ignore size when deciding whether to download
          --only-missing  download only missing files
          --only-existing download only files already existing at target
      -n, --only-newer    download only newer files (-c won't work)
          --no-empty-dirs don't create empty directories (implies --depth-first)
      -r, --no-recursion  don't go to subdirectories
          --no-symlinks   don't create symbolic links
      -p, --no-perms      don't set file permissions
          --no-umask      don't apply umask to file modes
      -R, --reverse       reverse mirror (put files)
      -L, --dereference   download symbolic links as files
      -N, --newer-than=SPEC    download only files newer than specified time
          --on-change=CMD      execute the command if anything has been changed
          --older-than=SPEC    download only files older than specified time
          --size-range=RANGE   download only files with size in specified range
      -P, --parallel[=N]  download N files in parallel
          --use-pget[-n=N]     use pget to transfer every single file
          --loop          loop until no changes found
      -i RX, --include RX include matching files
      -x RX, --exclude RX exclude matching files
      -I GP, --include-glob GP include matching files
      -X GP, --exclude-glob GP exclude matching files
      -v, --verbose[=level]    verbose operation
          --log=FILE      write lftp commands being executed to FILE
          --script=FILE        write lftp commands to FILE, but don't execute them
          --just-print, --dry-run   same as --script=-
          --use-cache          use cached directory listings
      --Remove-source-files    remove files after transfer (use with caution)
      -a             same as --allow-chown --allow-suid --no-umask

I'll spare you the rest. there's enough for a novella.

share|improve this answer
oh, and it also has reverse mirror. that is mirror -R (which sounds like what you want to do) – 0x90 Oct 3 '10 at 6:40
thanks. great answer. – aioobe Oct 3 '10 at 11:17

I just found out about sitecopy and it does precisely what I want. I just entered

site myftpsite
    remote /
    local /home/aioobe/work/mysite/public
    username myuser
    password mypass

and then I just type sitecopy --update myftpsite and it "synchronizes" the files based on timestamp.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .