!!CrushClient Documentation\\

A leading "L" character instructs the client to apply the command to the local client versus to the remote client. lls would sit your current local folder, lcd changes the local folder.  Only the file transfer commands do not have an "L" version.  (put, get, diffput, diffget)  If a path being references has a space in it, the path must be quoted.  Example:  put "some file.txt" "/some folder/my file.txt".  Backslash quote escaping is permitted as well.  The "local" client doesn't need to be local at all though, both clients can be remote and files can be streamed through the CrushClient.

----
Different ways to start CrushClient.  If started with a script, no input will be taken, all input will be read line by line from the script as if you were physically typing it.  Don't forget the quit command at the end or the client will wait indefinitely for more input...  A script is typically ended with two lines.  wait, then quit.
{{{
java -jar CrushTunnel.jar
java -jar CrushTunnel.jar https://demo:demo@crushftp.com/demo/
java -jar CrushTunnel.jar https://demo:demo@crushftp.com/demo/ file://c:/temp/
java -jar CrushTunnel.jar script my_commands.txt
}}}
----
Example: http://user:pass@domain.com:port/path/  or  https://crushftp.com/  or https://crushftp.com/demo/  The url must end with a slash.  User and pass is optional in the URL, you will be prompted for them if omitted.
{{{
connect url
lconnect url
}}}
----
Disconnects from the currently connected client, for use when you want to change what client your connected with.
{{{
disconnect
ldisconnect
}}}
----
Transfers file/directory from remote client to local client.  Example: get test.txt  or  get test.txt test_local.txt   or  get /folder/test.txt file.txt    or  get /folder/test.txt /local/test.txt\\
reget will resume the download based on the target file's size.
{{{
get /remote/file/path [local file path]
reget /remote/file/path [local file path]
}}}
----
Transfers file/directory from local client to remote client.  Example: put test.txt  or  put test.txt test_remote.txt   or  put /folder/test.txt file.txt    or  put /folder/test.txt /remote/test.txt\\
reput will resume the put based on the size of the remote item.\\
appe will start appending the current file to the target file.
{{{
put /local/file/path [remote file path]
reput /local/file/path [remote file path]
appe /local/file/path [remote file path]
}}}
----
Similar to the put command, but first calculates the differences between the files and then transfers just those differences.  Remote side must be a CrushFTP server.
{{{
diffput
}}}
----
Similar to the get command, but first calculates the differences between the files and then transfers just those differences.  Remote side must be a CrushFTP server.
{{{
diffget
}}}
----
Prints out a unix styled directory listing.
{{{
list
dir
ls
llist
ldir
lls
}}}
----
Deletes an item.  Example:  del /remote/test.txt
{{{
del /remote/path
ldel  /local/path
}}}
----
Gets info about the selected item and prints to the screen.
{{{
stat /remote/path
lstat /local/path
}}}
----
Waits for active transfers to complete with the local or remote client and prints occasional statistics about in-progress transfers.
{{{
wait
lwait
}}}
----
Pauses CrushClient for the specific milliseconds to impose delays in command processing.
{{{
delay {milli seconds}
}}}
----
Prints stats about current in progress transfers one time.
{{{
info
linfo
}}}
----
Aborts all in progress transfers.
{{{
abor
}}}
----
Quits the CrushClient, aborting any in-progress transfers.
{{{
quit
}}}
----
Lists the segments that are different between the two files.
{{{
diff local/path remote/path
}}}
----
Sets a variable that can be later referenced, or sets different client properties on how the client acts.
Example: set download_threads 10
{{{
set param value

Param list:
download_threads (default = 0 which is unlimited)
upload_threads (default = 0 which is unlimited)
skip_modified_and_size (default is true)
skip_modified (default is false, ignored if skip_modified_and_size is true)
skip_size (default is false, ignored if skip_modified is true or skip_modified_and_size is true)
keep_date (default is true)
multithreaded (default is true)
}}}
----
Toggles the use of FTP passive mode.
{{{
pasv
}}}
----
Changes the current working directory for the local or remote client.
{{{
cd
cwd
lcd
lcwd
}}}
----
Prints the current working directory for the local or remote client.
{{{
pwd
lpwd
}}}
----
Creates a new folder.
{{{
mkd /remote/path
lmkd /local/path
}}}
----
Renames an item, both must be specified in the command for source and destination.
{{{
rename /remote/path1 /remote/path2
mv /remote/path1 /remote/path2
lrename /local/path1 /local/path2
lmv /local/path1 /local/path2
}}}
----
The anything section is passed to the remote server directly.  Applies only to FTP connections.
{{{
quote anything
lquote anything
}}}
----
Sets the modified date to the specified time.
{{{
mdcm /remote/path yyyyMMddHHmmss
lmdtm /local/path yyyyMMddHHmmss
}}}
----
Sets a configuration parameter on the client.  Undocumented for now, use the UI in CrushFTP to setup a config on a connection item and then view the raw XML for the config param it configured.
{{{
config param value
lconfig param value
}}}
----
Queues up commands in a list so they can later on be executed.  Built a list of file transfers to do in a  queue, then run it with the execute command.  Useful for scripting load to the server.
{{{
queue {id} add command
queue {id} reset
queue {id} run
}}}
----