Book HomeRunning LinuxSearch this book

H.2. Sending and Receiving Files

Most communications programs invoke rz and sz automatically. You can also connect to a remote system, log in, and manually invoke sz with the flags you want to use. Zmodem automatically downloads the files to your home system using the same filenames. (Zmodem tools aren't clever about filenames, so when you download to MS-DOS, be careful about getting files with names that can't be squeezed into the filename.ext DOS filename limit. If you transfer filename.extension, it arrives on your DOS host converted to filename.ext, which is probably OK. But, if you try to transfer filename.more.extension, most Zmodem utilities will give up, probably with a misleading message that the transfer completed.)

One of the most confusing things about Zmodem transfer is determining the command to use to perform the transfer. You have to remember which system you are invoking the command from and which system contains the files to transfer. A consistent way to perform Zmodem transfer is to always invoke the transfer on the remote host, whether uploading (sending to the remote host) or downloading (receiving from the remote host). For example, if you are logged in to a remote host (using C-Kermit, or Telix, or whatever) and want to send some text files from that system to your home system, you might enter something like this:

$ sz -a *.txt
sz would queue the files and successively send them back to the local system. The -a option stands for ASCII and ensures that carriage returns and newlines appear as they should on the system where the file ends up.

On the other hand, if you want to upload some files (receive them on the remote host), you would simply enter the following command:

$ rz
The remote system would then prompt something like this:
rz ready to begin transfer, type "sz file …" to your modem program 
**B0100000023be50
rz waits patiently for you to switch back to the local host and give it a Zmodem send command, using sz directly, or through the software you are using. For example, if you call the remote host using ProComm, you would press Page Up and select Zmodem transfer from the pop-up menu and then enter the files to send on the input line ProComm provides.

When sending files from a Macintosh system to a Unix or Linux host via Zmodem protocol, remember that the filenames cannot have spaces in them.

The following command checks some text files and sends only the .txt and .doc files that exist on both systems and that are newer on the sending system. Conversion of Unix newlines to DOS-style carriage return/linefeed is performed automatically by most receiving Zmodem packages:

$ sz -Yan *.txt *.doc

In many versions (not all, unfortunately) you can pipe the output of a process from a remote host to sz using a dash argument (sz -), and sz automatically sends the file on to you. A filename for the output is generated by putting an s in front of the process ID of the process that pipes the standard input to sz and appending a .sz suffix. For example, to get a printout of the sz.1 manual page on the remote system (versions of sz software vary, of course), you might enter:

man sz | col -b | sz -
where col -b strips out the backspacing that was put into the formatted output by the man command to implement highlighting and underscoring on the display. The dash argument to sz tells it to send the file back to your local system. When you get offline and check, you might find the file saved locally as something like /tmp/s7750.sz. (the /tmp directory is the most common receiving directory that a given communications program uses unless the current directory is used.)



Library Navigation Links

Copyright © 2001 O'Reilly & Associates. All rights reserved.