I wrote upload to maintain my personal web site. I only have FTP access, so rsync isn’t available. I was inspired by two other Perl programs, ftpsync and mirror, which almost-but-not-quite suited my needs. I wanted a fast program that could keep the remote site in sync with my local copy. Mirror did what I wanted, but it was very slow. So in good Perl fashion, I decided to write my own.
Upload uploads a directory tree to a given FTP location and records the date each file/directory was uploaded. On subsequent runs, upload only transfers files/directories that are newer than the time recorded in the prior upload. Upload may optionally delete files/directories, but only if you specify the -d option. It knows how to exclude files that match a given Perl regex (e.g.
\.svn|\.swp$). For more documentation, run upload without any arguments or read the embedded Perldoc.
You can download uphold here.