Bx
From Carls wiki
bx (pronounced bix) is a small utility for abstracting away simple FTP tasks. Essentially, bx maintains a mapping between the files on your computer and files on FTP servers to which you have access. The name is chosen because of ease of typing on a QWERTY keyboard.
bx is written in Perl. Maybe one day when it grows up, it'll be a CPAN module. It can be downloaded here for now.
up and down
Uploading a file is then as simple as typing
$ bx up <file>
Ordinarily, your file will be sent to your default directory and ftp server. This is queried the first time you make an upload. Additionally, you can bind certain local directories to certain remote directories, either through manually editing the config file, or through command line arguments. The file will then be treated differently depending on where it's located.
You can download files as well.
$ bx down <file>
Both these subcommands take an arbitrary number of files. If zero files are given, all files in the current directory are transmitted. A directory argument will transmit the contents of that directory, creating directories as necessary.
status and diff
If you want, you can check which files differ between your computer and the remote location:
$ bx status R file1 R file2 L file3 M file4
Here R signifies that the file exists remotely, but not locally. L means the opposite. A file with an M exists on both places, but differs in content. If you want to see the differences, you can type
$ bx diff
This will list the lines that differ, in standard diff notation.
You can supply file arguments to both these subcommands, telling it to limit the listings to those files only. A directory argument means that directory and all of its contents.
