!!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.

{{{
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
}}}
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.

{{{
connect url
lconnect url
}}}
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.

{{{
disconnect
ldisconnect
}}}
Disconnects from the currently connected client, for use when you want to change what client your connected with.

{{{
put /local/file/path [remote file path]
reput /local/file/path [remote file path]
appe /local/file/path [remote 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.

{{{
diffput
}}}
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.

{{{
get /remote/file/path [local file path]
reget /remote/file/path [local file path]
}}}
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.

{{{
diffget
}}}
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.

{{{
list
dir
ls
llist
ldir
lls
}}}
Prints out a unix styled directory listing of the remote or local side.

{{{
del /remote/path
ldel  /local/path
}}}
Deletes a remote file.  Example:  del /remote/test.txt

{{{
stat /remote/path
lstat /local/path
}}}
Gets info about the selected item and prints to the screen.

{{{
wait
lwait
}}}
waits for active transfers to complete with the local or remote client and prints occasional statistics about in progress transfers.

{{{
delay {milli seconds}
}}}
Pauses CrushClient for the specific milliseconds to impose delays in command processing.

{{{
info
linfo
}}}
prints stats about current in progress transfers one time.

{{{
abor
}}}
Aborts all in progress transfers.

{{{
quit
}}}
exits the CrushClient, aborting any in progress transfers.

{{{
diff local/path remote/path
}}}
Lists the segments that are different between the two files.

{{{
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)
}}}
Sets a variable that can be later referenced, or sets different client properties on how the client acts.
Example: set download_threads 10

{{{
pasv
}}}
Toggles the use of FTP passive mode.

{{{
cd
cwd
lcd
lcwd
}}}
Changes the current working directory for the local or remote client.

{{{
pwd
lpwd
}}}
Prints the current working directory for the local or remote client.

{{{
mkd /remote/path
lmkd /local/path
}}}
Creates a new folder.

{{{
rename /remote/path1 /remote/path2
mv /remote/path1 /remote/path2
lrename /local/path1 /local/path2
lmv /local/path1 /local/path2
}}}
Renames an item, both must be specified in the command for source and destination.

{{{
quote anything
lquote anything
}}}
The anything section is passed to the remote server directly.  Applies only to FTP connections.

{{{
mdcm /remote/path yyyyMMddHHmmss
lmdtm /local/path yyyyMMddHHmmss
}}}
Sets the modified date to the specified time.

{{{
config param value
lconfig param value
}}}
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.

{{{
queue {id} add command
queue {id} reset
queue {id} run
}}}
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.