FolderShot is an application that helps synchronize your local folder with an online storage server automatically. It provides an easiest way to share and store your files online. A local daemon is started and keeps running at the backend. It synchronizes between the online storage server and specified local folders on several of your computers.


  • Sync files automatically to computers and the Web
    • A local folder 'Folder Shot' in your home path will be created. Then any files or folders inside 'Folder Shot' will get synchronized to the online storage server that you have specified.
  • Start/Stop the daemon through the UI
    • User can control the daemon through the status icon located on the panel.
  • Synchronize with some popular storage servers
    • User can specify which storage server that the local folder will be synchronized with. Currently we plan to support the servers that gvfs supports, which includes FTP, SSH, WEBDAV etc.

How the Mirror Daemon Works

  • The diagram below shows how the user mirror daemon works


Usually, the local daemon works in the following steps:

  1. The user will first configure an account for an online storage server before the daemon starts to work. The daemon will read the configuration from GConf and reqeust WebDAV authentication with the server. The security password can be readily cached and retrieved from gnome-keyring.
  2. Checking the contents of the local folder are the same as the remote WebDAV mirror using gio. Stat the files, compare filenames, file sizes and checksums, etc. Resolve any differences by updating the local store or remote store based on a preexisiting policy.
  3. Monitoring the local user filesystem location using gio (FAM). Name this folder as 'Folder Shot'. We will make it easy to find even without a bookmark. We will make this location appear as a default bookmark for the user so it shows up in the panel->places menu, the nautilus sidebar and gtk file selection dialogs. Make it easy to find from ALL applications not just those that use GTK libraries.

  4. Syncing folder changes back to the WebDAV store deteced in 3
  5. Detect changes in online storage and update local store appropriately. As we are using WebDAV on the remote side we can not request notification of changes from the server so we will have to use some passive polling (check once every five minutes or so )
  6. Synching remote folder changes back to the local folder. This is the reverse of number 4 for changes detected in number 5.
  7. Flashing a sync icon in the notification area and updating nautilus metadata to put emblems on changed files currently being sync'd.

State Transition

Following is a diagram that shows the daemon's state transition




UI Design


Folder Shot Preferences.png




Attic/foldershot (last edited 2013-12-03 19:50:12 by WilliamJonMcCann)