Need to find a way to upload files to my server through FTP. But only the ones that have been modified. Is there a simple way of doing that? Command line ftp client or scr
The most reliable way would be to make md5 hashes of all the local files you care about and store it in a file. So the file will contain a list of filenames and their md5 hashes. Store that file on your ftp server. When you want to update the files on your ftp server, download the file containing the list, compare that against all your local files, and upload the files that have changed (or are new). That way you don't have to worry about archive bits, modified date, or looking at file sizes, the use of which can never be 100% reliable.
Using file sizes isn't reliable for the obvious reason - a file could change but have the same size. I'm not a fan of using the archive bit or modified date because either of those could be confused if you backup or restore your local directory with another backup program.
git-ftp works really nice:
apt-get install git-ftp
in the application folder:
git config git.ftp.xxxx.url ftpservice.server.com/root/dir/for/ftp
git config git.ftp.xxxx.user myUsername
git config git.ftp.xxxx.password myPassword
following only if target is up-to-date by other ftp client (it changes ftpservice.server.com/root/dir/for/ftp/git-ftp.log to current commit)
git ftp catchup --scope xxxx
//editing sources//
git commit -m "new version"
git ftp push --scope xxxx
and you can see what hapens:
git ftp show --scope xxxx
git ftp log --scope xxxx
Netbeans has a nice ftp. it supports selective upload, download
Jonas,
How often are the files likely to change?
If they change on a predictable time frame, you could consider using the modified and other date attributes on the file.
Do you really insist on ftp
, or can you use rsync
instead?
If ftp
is required mhenry1384's idea is roughly what rsync
does (well half of it anyway, rsync
also looks at modification times for files that differ...).
(Waiting for the comment on the main question to be answered before expanding)
The strategy would be: