UpSync Version 0.7 Released

Update on November 25th, 2012
This application has been retired, as there are much better solutions available for free; please check out FreeFileSync instead.

The new version is here! As always, it is recommended to upgrade as soon as possible. Here are the major changes:

  • Administrator permissions are no longer required to run the application from the Program Files folder; application settings and logs are now stored in the Windows program data folders.
  • The application has been tested with and should now work fine with UAC under Windows Vista and Windows 7.
  • Summary logs have been added to the end of the logging to report count totals for the various operations.
  • Fixed a bug in the new syncing empty folders functionality that caused a neverending loop when the root of either folder was empty.
  • Added a “File Filter” property to mapped folders to allow the use of wildcards (*.txt) to restrict which files to sync (as requested by Jason Saul).

Simply run the setup to upgrade to the latest version.

[Download links removed]

Remember to share your thoughts and suggestions!

This entry was posted in C#, Software, Technology, UpSync, Visual Studio 2008. Bookmark the permalink.

16 Responses to UpSync Version 0.7 Released

  1. David Hechler says:

    Man, you are moving on this program. Great job dude!

  2. Jason Carr says:

    Hahaha, yeah if you call “moving” updating once a month… ;)

    Are you using it?

  3. Rich Hopkins says:

    It’s a great application, nice and simple interface.  I love that the settings are stored in XML, it makes it really easy for me to modify things without having to use the interface every time.  I’m even looking at writing some VBScript using XMLDOM to parse through the settings.xml and use input boxes for members of my team to add things into the sync list.

    The biggest problem I’m running into is that I’m trying to sync 1 source to 58 global offices, so it’s a bit slow.  Though, I figure that once I let it run for a week or two and get all the sites synched up, the incremental syncs from that point on will go much faster.  Basically, my team could then drop a new application we need at all the sites into the source and then run a new sync.  Maybe it’s just too much load for one server to deal with and I can sync our main office to some of our larger regional offices, then setup those offices to sync their region.  *shrug*  I’m still playing right it.

    Have you ever looked at RichCopy?  It was released by Microsoft a month or two back and can handle multi-thread copying.  Its FAST.  Really fast!  But I can only set it for one source and one destination.  If you could work in multi-threading that would be amazing.

  4. Jason Carr says:

    Thanks, Rich. :)

    As far as syncing multiple locations, honestly I hadn’t thought of that.  How exactly are you setting up/configuring the application?  Are you installing it on one machine and just syncing from that machine to all of the different locations?  Or are you installing it on all of the machines?  It’s kind of neat how an application can be used in ways you didn’t even think of…

    I’d never heard of RichCopy; I’ll definitely look into it.  Multi-threaded copying is certainly an option, but I’m not so sure that it would do much for us regarding performance.  I’m currently using .NET which uses Windows’ built-in file copy APIs, which are far from 100% ideal (they do have performance issues).  I wouldn’t be surprised if whoever wrote RichCopy wrote the utility from the ground up, completely bypassing the Windows file copy APIs, and thus enabling some faster performance.

    Anyway, you are correct that the operation should speed up significantly once everything is caught up.  Incremental syncs should be exponentially faster.

    Thanks for all your input; I’ll look into things and see what options we have. :)

  5. Rich Hopkins says:

    Its on one server and has a bunch of syncs setup for it.  Here’s an example of my settings.xml:

    <?xml version=”1.0″ standalone=”yes”?>
    <UpSync>
      <MappedFolder>
        <LocalFolder>\\DFS-PATH\Master-Packages\Sync</LocalFolder>
        <RemoteFolder>\\Regional-Server-1\Library\Packages</RemoteFolder>
        <Enabled>true</Enabled>
        <LastSyncTime>0001-01-01T00:00:00-08:00</LastSyncTime>
        <SyncLocalFolderToRemoteFolder>true</SyncLocalFolderToRemoteFolder>
        <SyncRemoteFolderToLocalFolder>false</SyncRemoteFolderToLocalFolder>
        <DeletedFromLocalFolderAction>Delete</DeletedFromLocalFolderAction>
        <DeletedFromRemoteFolderAction>Copy</DeletedFromRemoteFolderAction>
      </MappedFolder>
      <MappedFolder>
        <LocalFolder>\\DFS-PATH\Master-Packages\Sync</LocalFolder>
        <RemoteFolder>\\Regional-Server-2\Library\Packages</RemoteFolder>
        <Enabled>true</Enabled>
        <LastSyncTime>0001-01-01T00:00:00-08:00</LastSyncTime>
        <SyncLocalFolderToRemoteFolder>true</SyncLocalFolderToRemoteFolder>
        <SyncRemoteFolderToLocalFolder>false</SyncRemoteFolderToLocalFolder>
        <DeletedFromLocalFolderAction>Delete</DeletedFromLocalFolderAction>
        <DeletedFromRemoteFolderAction>Copy</DeletedFromRemoteFolderAction>
      </MappedFolder>
      <MappedFolder>
        <LocalFolder>\\DFS-PATH\Master-Packages\Sync</LocalFolder>
        <RemoteFolder>\\Regional-Server-3\Library\Packages</RemoteFolder>
        <Enabled>true</Enabled>
        <LastSyncTime>0001-01-01T00:00:00-08:00</LastSyncTime>
        <SyncLocalFolderToRemoteFolder>true</SyncLocalFolderToRemoteFolder>
        <SyncRemoteFolderToLocalFolder>false</SyncRemoteFolderToLocalFolder>
        <DeletedFromLocalFolderAction>Delete</DeletedFromLocalFolderAction>
        <DeletedFromRemoteFolderAction>Copy</DeletedFromRemoteFolderAction>
      </MappedFolder>
      <Settings>
        <DefaultSyncLocalFolderToRemoteFolder>true</DefaultSyncLocalFolderToRemoteFolder>
        <DefaultSyncRemoteFolderToLocalFolder>false</DefaultSyncRemoteFolderToLocalFolder>
        <DefaultDeletedFromLocalFolderAction>Delete</DefaultDeletedFromLocalFolderAction>
        <DefaultDeletedFromRemoteFolderAction>Copy</DefaultDeletedFromRemoteFolderAction>
        <ImmediatelyStart>false</ImmediatelyStart>
        <AutomaticallyClose>false</AutomaticallyClose>
        <LogToFile>true</LogToFile>
        <LogFilesToKeep>30</LogFilesToKeep>
        <VerboseLogging>true</VerboseLogging>
      </Settings>
    </UpSync>

  6. Jason Carr says:

    I edited the font part out. :)

    That makes sense.  I’ll do some testing with RichCopy to see if I can figure out where it’s getting its performance gains.  If multi-threaded copying is the key, then by all means we’ll get it implemented.  I’m still skeptical on that, though…

    Thanks again. :)

  7. Rich Hopkins says:

    Is there a way you could have UpSync log an error when it runs into one, but continue on syncing the rest of the files?  Having to restart the Sync everytime I run into an I/O error can be a hastle.
    ERROR: Cannot proceed.  Could not copy the file “\\Source-Path\Setup.exe” to file “\\Destination-Path\Setup.exe”.  An unidentified I/O error occurred.
    **** Sync process was cancelled and did not complete. ****

  8. Jason Carr says:

    Rich, yeah, I had thought of that one.  It’s on my list for the next version.  I’m thinking the ability to collect the errors and send an email for any errors at the end would be ideal (and the ability to configure what to do when an error occurs).

  9. Rich Hopkins says:

    Awesome.  Yeah a “Reply X number of times” thing for errors or whatever would rock.

  10. Jason Carr says:

    What do you mean by a “reply X number of times”?

  11. Rich Hopkins says:

    Oops, typo.  Retry, not reply.  :)

  12. Jason Carr says:

    Oic…yeah…that makes a lot of sense. :)

    Thanks. :)

  13. Justin Chmura says:

    Started using the application. It actually works really good not just for remote syncing but local as well. I use to sync my ‘localhost’ folder and my projects folder for testing websites.
    My only suggestion:

    Might have been mentioned before but taking advantage of multi-cores. I’m assuming you’ve used dbPowerAmp that uses each for for each file. This may speed up really long syncs with really big files.

    Like the application though.

  14. Jason Carr says:

    Thanks, Justin.  Yes, I think multi-core processing has come up before; I need to look into it.  I don’t really have any idea how difficult it would be to do with .NET.

  15. Justin Chmura says:

    One more suggestion, Windows 7 support. It would be neat to be able to use a jumplist item to sync the selected folders or all folders. Something like that. Just a thought.
    Also, congrats man!!

Leave a Reply