This pull request includes a number of related changes:
Refactor code into sync, local and remote classes
Add test cases that do a limited test of each class in isolation
Add a sync-from=all command line option that allows a download of any remote file not on local, and upload of any local file not on remote as discussed in #22
Add retries on uploads and downloads
Add a file extension on download if one doesn't exist
Incorporate pull request #32 which fixes #31 with slight changes
It has had a reasonable amount of real world testing (uploaded 4Gb of files, then added things at remote and local ends to check sync works) as well as the unit tests
This pull request includes a number of related changes:
It has had a reasonable amount of real world testing (uploaded 4Gb of files, then added things at remote and local ends to check sync works) as well as the unit tests