I need to syncronize files in my computer with server to which I have only FTP access. So I can't use rsync (that would need at least SFTP, but the only channel available for me is plain vanilla FTP).

I only need one-way syncronization: from my machine to server. I have heard of a program called unison, but it seems to be meant for two-way syncronisation and I'm unsure whether it could be tweaked to do what I want. I should also add that the program should work non-interactively, so that it could be used inside a script.

Final option would be to write my own script that compares files by modification time (or something like that) and copies over the ones that have changed. I have already managed to mount the FTP directory to a local directory, so the problem boils down to just syncing two directories. But my gut feeling tells me, that there must be something like that already existing in the wild.

3 Answers 3


Because I couldn't get wput to work, I looked for an alternative and found: ncftp.

More specifically ncftpput seemed to do almost what wput was designed to do. Most importantly for me, it didn't crash like wput. And indeed it manages to upload only those files that haven't changed using the -z option:

ncftpput -z -u user -p pass ftp.mydomain.com dir/name files-to-upload...
  • worked perfectly for me
    – roman m
    Nov 13, 2009 at 21:01
  • On OSX, install via: brew install ncftp.
    – kenorb
    Apr 15, 2015 at 19:05
  • 1
    To copy whole directory trees, use -R.
    – kenorb
    Apr 15, 2015 at 19:12
  • +1 for the off-label use of -z to mean "noclobber"/"don't overwrite"
    – user59328
    Dec 8, 2015 at 1:19
  • I wish I found this 2 days ago. I gave up on ncftpget since the man page did not show any "only newer" "skip existing" options. I beat my head on lftp -- from BASH to Python. Then I gave another try to ncftp on Google and found your solution. I looked it up for ncftpget (man page) -- "-z/-Z Do (do not) try to resume transfers. The default is to try to resume". Did not sound convincing. But, hell ya.. that's that option I was looking for: download only new files using ncftpget. I hope this comment helps some one.
    – Anup Nair
    Mar 17, 2018 at 6:30

lftp seems also appropriate here: https://stackoverflow.com/a/693280/480534


lftp <username>@<server>
  mirror -c <source> <dest>

Sure, and it is called wput

  • Of course! How did I not think about that. Totally forgot that program. I think it will work, but I'll report back when I get back home to try it out... Sep 2, 2009 at 7:48
  • For some reasin wput gives me "Segmentation fault" when ever I try to upload something. Sep 2, 2009 at 16:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.