==== Mason ==== Mason was created out of need for a cross-platform solution to file synchronization that is easy to setup and use. It may not provide some of the more advanced abilities of other file synchronization tools but it will provide enough functionality to get the job done. The mason JAR can be run in one of two modes which are client and server. == Order Of Operations and Operations == There are two operations that can be performed which are --push and --pull. These operations can also be modified with --prompt and --pretend. The prompt produces the same output as --pretend except it stops and prompts if you wish to continue, while pretend does not prompt or preform the operation and simply exits. An atomic operation happens all at once and therefore there is no chance for a second user to modify the remote during the operation. The order of operations on the command line are respected by the client parser and therefore using --push --pull would cause a push to happen then a pull. Also arguments are considered part of the nearest operation to the left such that --push --prompt --pull would cause a prompted push then immediantly a pull operation. Each operation can be followed by zero or more modifiers such as: --nodelete --noupdate --nonew === Client === This will detail the different ways you might use Mason. == Single User == In a single user situation only one user will be performing syncs with the remote server. In this situation you are only going to be performing two types of operations. The first operation is a push: -jar mason.jar --push This will update all modified files, upload any new files, and delete any files on the remote side that do not exist locally. The second operation is going to be a pull operation. -jar mason.jar --pull The pull is useful when you may wish to create a copy of the remote server on another computer or even to restore on the original client computer. == Multi User == In a multi user environment you may have changes made on the remote by another user besides yourself so special care has to be taken in order to operate without losing data. The general scheme is as follows: -jar mason.jar --pull --nodelete --prompt --push --prompt This will print out what files will be updated and what new files will be fetched from the server. The --nodelete keeps local files from being deleted which do not exist on the server. These files may be ones that you are currently working on and do not wish to update. It will also display what new files will be pushed to the remote.