CrushSync is an enterprise only feature.  It provides real time file synchronizations through CrushFTP. The client runs on the local machine monitoring the specified folders. When a change is detected, the change is propagated to the CrushFTP server, and any other clients subscribed to that folder now get those same changes. Only the changed parts of large files are sent, and bandwidth acceleration can be used as well. Client configurations can be branded, localized, and pre-configured for deployment.  The client is launched as an automatically updating application over a web connection. You as the server administrator control when you want to update the application for end users.

[CrushSync Comparison] with some other similar products.

----
!!!Setup Guide: Synching and Revision Tracking
----
First you need to configure a folder in the user manager that has synchronization tracking enabled on it.  Then on a folder item, give it full permissions.

[attachments|usermanager_vfs_sync.png]

Then click the Advanced button to open the panel to configure the sync options.  Its recommended to do at least 3 revisions.  If a conflicting edit was done on the same file by two people, it uses the revisions to pull back prior versions so that the users can self resolve the issue.

[attachments|vfs_sync.png]

This configuration is the same on both user1 and user2 in the example.
----
!!!Giving Access to the Client
----
Before users will be able to download and run CrushSync, you need to go into the user manager, WebInterface section, Buttons section and add the button 'Sync Manager'.  The app itself is located here: \\
Windows: [https://www.crushftp.com/early10/CrushSync/CrushSync_windows.exe]\\
macOS: [https://www.crushftp.com/early10/CrushSync/CrushSync_macOS.zip]\\
----
!!!Starting the Client
----
When a user is logged into the WebInterface, you will see an icon next to the folders and files that are being synched.


[attachments|sync_webinterface.png]

On windows, you will have an icon in your system tray for the sync agent and on OS X you will have an icon in your menubar.  There is no management UI on the machine, you do all of that through the WebInterface in the 'Sync Manager'.

----
!!!Configuring the Client
----
You can configure everything in the client.

[attachments|crushsync.png]\\

There needs to be a local folder configured for synchronization, as well as the server path.  Typically this is going to just be a single slash unless you are only synching to a sub directory of a user.

The path to the server location must always be the same across multiple accounts.  So user1 can't have a server path of /myfiles/ and user2 have a path of /mydocuments/.  They both must be the same.

----
!!!Starting the Sync
----

Now you can click 'Start Sync' to starting things off.  It will compare your current files with the server, and look for any changes that have occurred while you were offline.

Once all comparisons are done, it will sit idle in an 'Active' green window state.  The realtime file monitor is watching for any changes occurring in the folder you have configured.  Any changes, renames, deletes, etc will then be propagated to the CrushFTP server so that other CrushSync clients can replicate them locally.


----
!!!Customizing the Sync
----

You can give the client a custom name, so it doesn't have to be called CrushSync

When you add the download Sync client button in the UserManager, UserName, WebInterface, Buttons section, you can specify a name for it, and the given name will be used instead of the CrushSync name.

Customizations are made in the User Manager, WebInterface, custom javascript section.  Add these example lines in there.
CrushSync
localizations.syncAppName = 'MySyncName';

It can't run as a service, but it can run at startup when you login to the user account.  There is a menu option in the systray to help with that part.

That is it.  All references in what it downloads, the service name, the window titles, etc will be MySyncName.

The manageSyncs interface is generic that it just labels itself as Manage Syncs and not CrushSync.  So no changes are needed there.  When you add the buttons, you can label the buttons however you like.  But don't change their action values.

----
You can install CrushSync as a service to have an unattended machine running the sync.  You should have a "Java" folder in your folder with CrushSync.jar.  You also need a ready and working preferences config for it too.  You should run it in GUI mode first to make sure everything works before doing service mode...that way you have the prefs.XML file it needs too.

Then install the service with  (CrushFTP v9.3 and above, CrushSync 3.12.05 and above):
{{{
java -jar CrushSync.jar -i
}}}

Or remove with:
{{{
java -jar CrushSync.jar -r
}}}

This assumes a CrushSync folder already exist from running the CrushSync.jnlp file one time.

----
!!!Running on Linux
----
Running via the command line is possible too.\\
\\
You need the prefs.xml file from a Windows/OSX machine first that you have launched CrushSync at least one time on.\\
\\
Copy this to the OS home folder for the user, then a subdirectory called 'CrushSync'.
{{{
~/CrushSync/prefs.XML
}}}
\\
This is VERY important...you must modify this prefs.XML file changing the "clientid" in it to something unique.  Every agent must have a unique client ID.\\
\\
Then copy over CrushSync.jar file too from a crush install to this same location.  You will find it in your WebInterface folder, CrushSync folder.\\
\\
Now launch the daemon with:\\
{{{
java -jar ~/CrushSync/CrushSync.jar -d
}}}
It will read in its prefs and connect to the server.  Now you configure everything from the sync manager.\\