ABCDEFGHIJKLMNOPQRSTUVWXYZ

sz

SZ(1)                                                                    SZ(1)



NAME
       sx, sb, sz - XMODEM, YMODEM, ZMODEM file send

SYNOPSIS
       sz [-+8abdefkLlNnopqTtuvyY] file ...
       sb [-adfkqtuv] file ...
       sx [-akqtuv] file
       sz [-oqtv] -c COMMAND
       sz [-oqtv] -i COMMAND
       sz -TT

DESCRIPTION
       Sz  uses the ZMODEM, YMODEM or XMODEM error correcting protocol to send
       one or more files over a dial-in serial port to a variety  of  programs
       running under PC-DOS, CP/M, Unix, VMS, and other operating systems.

       While  rz is smart enough to be called from cu(1), very few versions of
       cu(1) are smart enough to allow sz to work properly.  Unix  flavors  of
       Professional-YAM are available for such dial-out application.


       Sz sends one or more files with ZMODEM protocol.

       ZMODEM  greatly simplifies file transfers compared to XMODEM.  In addi-
       tion to a friendly user interface, ZMODEM  provides  Personal  Computer
       and  other  users  an  efficient,  accurate,  and  robust file transfer
       method.

       ZMODEM provides complete END-TO-END data integrity between  application
       programs.   ZMODEM's 32 bit CRC catches errors that sneak into even the
       most advanced networks.

       Advanced file management features include AutoDownload (Automatic  file
       Download  initiated  without  user intervention), Display of individual
       and total file lengths and transmission time estimates, Crash Recovery,
       selective  file  transfers,  and  preservation  of  exact file date and
       length.

       Output from another program may be piped  to  sz  for  transmission  by
       denoting standard input with "-":
                                    ls -l | sz -
       The  program  output is transmitted with the filename sPID.sz where PID
       is the process ID of the sz program.  If the environment variable ONAME
       is set, that is used instead.  In this case, the Unix command:
                             ls -l | ONAME=con sz -ay -
       will  send  a  "file"  to  the  PC-DOS  console display.  The -y option
       instructs the receiver to open the file  for  writing  unconditionally.
       The  -a  option  causes the receiver to convert Unix newlines to PC-DOS
       carriage returns and linefeeds.


       Sb batch sends one or more files with YMODEM or ZMODEM  protocol.   The
       initial  ZMODEM  initialization  is  not  sent.   When requested by the
       receiver, sb supports YMODEM-g with "cbreak" tty  mode,  XON/XOFF  flow
       control,  and  interrupt  character set to CAN (^X).  YMODEM-g (Profes-
       sional-YAM g option) increases  throughput  over  error  free  channels
       (direct  connection, X.PC, etc.)  by not acknowledging each transmitted
       sector.

       On Unix systems, additional information about the file is  transmitted.
       If  the  receiving  program uses this information, the transmitted file
       length controls the  exact  number  of  bytes  written  to  the  output
       dataset, and the modify time and file mode are set accordingly.


       Sx  sends  a  single  file with XMODEM or XMODEM-1k protocol (sometimes
       incorrectly called "ymodem").  The user must supply the  file  name  to
       both sending and receiving programs.

       If  sz  is  invoked  with $SHELL set and iff that variable contains the
       string  rsh  ,  rbash  or  rksh  (restricted  shell),  sz  operates  in
       restricted  mode.   Restricted  mode restricts pathnames to the current
       directory and PUBDIR (usually /usr/spool/uucppublic) and/or subdirecto-
       ries thereof.


       The  fourth form sends a single COMMAND to a ZMODEM receiver for execu-
       tion.  Sz exits with the COMMAND return  value.   If  COMMAND  includes
       spaces or characters special to the shell, it must be quoted.


       The  fifth  form sends a single COMMAND to a ZMODEM receiver for execu-
       tion.  Sz exits as soon as the receiver has correctly received the com-
       mand, before it is executed.


       The sixth form (sz -TT) attempts to output all 256 code combinations to
       the terminal.  In you are having difficulty sending files, this command
       lets  you  see  which  character codes are being eaten by the operating
       system.


       If sz is invoked with stdout and stderr to different datasets,  Verbose
       is  set  to 2, causing frame by frame progress reports to stderr.  This
       may be disabled with the q option.

       The meanings of the available options are:

       -+, --append
              Instruct the receiver to append transmitted data to an  existing
              file (ZMODEM only).
       -2, --twostop
              use two stop bits (if possible). Do not use this unless you know
              what you are doing.
       -8, --try-8k
              Try to go up to 8KB blocksize. This is incompatible  with  stan-
              dard  zmodem,  but  a common extension in the bbs world. (ZMODEM
              only).
       --start-8k
              Start with 8KB blocksize. Like --try-8k.
       -a, --ascii
              Convert NL characters in the transmitted file to CR/LF.  This is
              done  by  the  sender for XMODEM and YMODEM, by the receiver for
              ZMODEM.
       -b, --binary
              (ZMODEM) Binary override: transfer file without any translation.
       -B NUMBER, --bufsize NUMBER
              Use  a  readbuffer  of  NUMBER  bytes.  Default ist 16384, which
              should be enough for most situations. If you have a slow machine
              or  a  bad disk interface or suffer from other hardware problems
              you might want to increase the buffersize.  -1  or  auto  use  a
              buffer  large  enough  to buffer the whole file. Be careful with
              this option - things normally get  worse,  not  better,  if  the
              machine starts to swap.

              Using  this  option  turns  of memory mapping of the input file.
              This increases memory and cpu usage.
       -c COMMAND, --command COMMAND
              Send COMMAND to the receiver for  execution,  return  with  COM-
              MAND's exit status.
       -C N, --command-tries N
              Retry to send command N times (default: 11).
       -d, --dot-to-slash
              Change  all instances of "." to "/" in the transmitted pathname.
              Thus, C.omenB0000 (which is unacceptable to MSDOS  or  CP/M)  is
              transmitted  as C/omenB0000.  If the resultant filename has more
              than 8 characters in the stem, a "."  is  inserted  to  allow  a
              total of eleven.

              This option enables the --full-path option.
       --delay-startup N
              Wait N seconds before doing anything.
       -e, --escape
              Escape all control characters; normally XON, XOFF, DLE, CR-@-CR,
              and Ctrl-X are escaped.
       Force the sender to rename the new file if a file with the same
              name already exists.
       -f, --full-path
              Send Full pathname.  Normally directory  prefixes  are  stripped
              from the transmitted filename.

              This is also turned on with to --dot-to-slash option.
       -h, --help
              give help.
       -i COMMAND, --immediate-command COMMAND
              Send  COMMAND  to the receiver for execution, return immediately
              upon the receiving program's successful recption of the command.
       -k, --1k
              (XMODEM/YMODEM)  Send  files  using 1024 byte blocks rather than
              the default 128 byte  blocks.   1024  byte  packets  speed  file
              transfers  at  high bit rates.  (ZMODEM streams the data for the
              best possible throughput.)
       -L N, --packetlen N
              Use ZMODEM sub-packets of length N.  A larger  N  (32  <=  N  <=
              1024) gives slightly higher throughput, a smaller N speeds error
              recovery.  The default is 128 below  300  baud,  256  above  300
              baud, or 1024 above 2400 baud.
       -m N, --min-bps N
              Stop  transmission  if BPS-Rate (Bytes Per Second) falls below N
              for a certain time (see --min-bps-time option).
       -M N, --min-bps-time
              Used together with --min-bps. Default is 120 (seconds).
       -l N, --framelen N
              Wait for the receiver to acknowledge correct data every N (32 <=
              N  <= 1024) characters.  This may be used to avoid network over-
              run when XOFF flow control is lacking.
       -n, --newer
              (ZMODEM) Send each file if  destination  file  does  not  exist.
              Overwrite destination file if source file is newer than the des-
              tination file.
       -N, --newer-or-longer
              (ZMODEM) Send each file if  destination  file  does  not  exist.
              Overwrite  destination  file  if  source file is newer or longer
              than the destination file.
       -o, --16-bit-crc
              (ZMODEM) Disable automatic selection of 32 bit CRC.
       -O, --disable-timeouts
              Disable read timeout handling. This makes lsz hang if the  other
              side doesn't send anything, but increases performance (not much)
              and decreases system load (reduces number  of  system  calls  by
              about 50 percent).

              Use this option with care.
       -p, --protect
              (ZMODEM) Protect existing destination files by skipping transfer
              if the destination file exists.
       -q, --quiet
              Quiet suppresses verbosity.
       -R, --restricted
              Restricted mode: restricts pathnames to  the  current  directory
              and PUBDIR (usually /usr/spool/uucppublic) and/or subdirectories
              thereof.
       -r, --resume
              (ZMODEM) Resume interrupted file transfer.  If the  source  file
              is  longer  than the destination file, the transfer commences at
              the offset in the source file that equals the length of the des-
              tination file.
       -s HH:MM, --stop-at HH:MM
              Stop  transmission  at  HH  hours,  MM minutes. Another variant,
              using +N instead of HH:MM, stops transmission in N seconds.
       -S, --timesync
              enable timesync protocol support. See timesync.doc  for  further
              information.

              This  option  is  incompatible with standard zmodem. Use it with
              care.
       --syslog[=off]
              turn syslogging on or off. the default is set at configure time.
              This option is ignored if no syslog support is compiled in.
       -t TIM, --timeout TIM
              Change timeout to TIM tenths of seconds.
       -T, --turbo
              Do  not  escape  certain characters (^P, ^P|0x80, telenet escape
              sequence [CR + @]). This improves performance by about 1 percent
              and shouldn't hurt in the normal case (but be careful - ^P might
              be useful if connected through a terminal server).
       --tcp  Try to initiate a TCP/IP connection. lsz will ask the  receiving
              zmodem  to  open  a  TCP/IP  connection.  All handshaking (which
              address / port to use) will be done by the zmodem programs.

              You will normally not want to use this option as  lrzsz  is  the
              only  zmodem  which  understands what to do (private extension).
              You might want to use this option if the two programs  are  con-
              nected  (stdin/out)  over a slow or bad (not 8bit clean) network
              connection.

              Use of this option imposes a security risk, somebody else  could
              connect to the port in between. See SECURITY for details.
       --tcp-client ADDRESS:PORT
              Act as a tcp/ip client: Connect to the given port.

              See --tcp-server for more information.

       --tcp-server
              Act  as  a server: Open a socket, print out what to do, wait for
              connection.

              You will normally not want to use this option as  lrzsz  is  the
              only  zmodem  which  understands what to do (private extension).
              You might want to use this if you have to use zmodem (for  which
              reason  whatever),  and cannot use the --tcp option of lsz (per-
              haps because your telnet doesn't allow to spawn a local  program
              with stdin/stdout connected to the remote side).

              If  you  use  this  option you have to start lsz with the --tcp-
              client ADDRESS:PORT option.  lrz will print the address and port
              on startup.

              Use  of this option imposes a security risk, somebody else could
              connect to the port in between. See SECURITY for details.

       -u     Unlink the file after successful transmission.
       -U, --unrestrict
              Turn off restricted mode (this is not possible if running  under
              a restricted shell).
       -w N, --windowsize N
              Limit the transmit window size to N bytes (ZMODEM).
       -v, --verbose
              Verbose output to stderr. More v's generate more output.
       -X, --xmodem
              use XMODEM protocol.
       -y, --overwrite
              Instruct  a  ZMODEM  receiving program to overwrite any existing
              file with the same name.
       -Y, --overwrite-or-skip
              Instruct a ZMODEM receiving program to  overwrite  any  existing
              file  with  the  same name, and to skip any source files that do
              have a file with the same pathname on the destination system.
       --ymodem
              use ZMODEM protocol.
       -Z, --zmodem
              use ZMODEM protocol.

SECURITY
       Restricted mode restricts pathnames to the current directory and PUBDIR
       (usually /var/spool/uucppublic) and/or subdirectories thereof, and dis-
       ables remote command execution.

       Restricted mode is entered if the R option is given or if  lsz  detects
       that  it  runs  under a restricted shell or if the environment variable
       ZMODEM_RESTRICTED is found.

       Restricted mode can be turned of with the U option if not running under
       a restricted shell.


       Use of the
              --tcp-client or --tcp-server options imposes a security risk, as
              somebody else could connect to the port before you  do  it,  and
              grab  your data. If there's strong demand for a more secure mode
              i might introduce some sort of password challenge.



ENVIRONMENT
       ZNULLS may be used to specify the number of  nulls  to  send  before  a
              ZDATA frame.

       SHELL  lsz  recognizes a restricted shell if this variable includes rsh
              or rksh

       ZMODEM_RESTRICTED
              lrz enters restricted mode if the variable is set.

       TMPDIR If this environment variable is set its content is used  as  the
              directory  to  place  in  the answer file to a timesync request.
              TMP Used instead of TMPDIR if TMPDIR  is  not  set.  If  neither
              TMPDIR nor TMP is set /tmp will be used.

EXAMPLES
       ZMODEM File Transfer (Unix to DSZ/ZCOMM/Professional-YAM)
       % sz -a *.c
       This  single  command transfers all .c files in the current Unix direc-
       tory with conversion (-a) to end of line conventions appropriate to the
       receiving environment.  With ZMODEM AutoDownload enabled, Professional-
       YAM  and ZCOMM will automatically recieve the files after performing  a
       security check.

       % sz -Yan *.c *.h
       Send only the .c and .h files that exist on both systems, and are newer
       on the sending system than the corresponding version on  the  receiving
       system, converting Unix to DOS text format.
       $ sz -\Yan file1.c file2.c file3.c foo.h baz.h (R)(for VMS)

       ZMODEM Command Download (Unix to Professional-YAM)
        cpszall:all
           sz -c "c:;cd /yam/dist"
           sz -ya $(YD)/*.me
           sz -yqb y*.exe
           sz -c "cd /yam"
           sz -i "!insms"
       This Makefile fragment uses sz to issue commands to Professional-YAM to
       change current disk and directory.  Next, sz transfers  the  .me  files
       from  the  $YD  directory, commanding the receiver to overwrite the old
       files and to convert from Unix end of line conventions to  PC-DOS  con-
       ventions.   The  third  line transfers some .exe files.  The fourth and
       fifth lines command Pro-YAM to change directory and  execute  a  PC-DOS
       batch  file  insms .  Since the batch file takes considerable time, the
       -i form is used to allow sz to exit immediately.

       XMODEM File Transfer (Unix to Crosstalk)
       % sx -a foo.c
       ESC
       rx foo.c
       The above three commands transfer a single file from Unix to a  PC  and
       Crosstalk  with sz translating Unix newlines to DOS CR/LF.  This combi-
       nation is much slower and far less reliable than ZMODEM.

ERROR MESSAGES
       "Caught signal 99" indicates the program  was  not  properly  compiled,
       refer to "bibi(99)" in rbsb.c for details.

SEE ALSO
       rz(omen),    ZMODEM.DOC,   YMODEM.DOC,   Professional-YAM,   crc(omen),
       sq(omen), todos(omen), tocpm(omen), tomac(omen), yam(omen)

       Compile  time  options  required  for  various  operating  systems  are
       described in the source file.

VMS VERSION
       The VMS version does not support wild cards.  Because of VMS DCL, upper
       case option letters muse be represented by \ proceding the letter.

       The current VMS version does not support XMODEM, XMODEM-1k, or  YMODEM.

       VMS C Standard I/O and RMS may interact to modify the file contents.

FILES
       32 bit CRC code courtesy Gary S. Brown.

       sz.c, crctab.c, rbsb.c, zm.c, zmodem.h Unix source files

       sz.c,  crctab.c,  vrzsz.c,  zm.c,  zmodem.h,  vmodem.h,  vvmodem.c, VMS
       source files.

       /tmp/szlog stores debugging output (sz -vv) (szlog on VMS).

TESTING FEATURE
       The command "sz -T file" exercises the Attn sequence error recovery  by
       commanding  errors  with  unterminated  packets.  The receiving program
       should complain five times about binary data packets  being  too  long.
       Each  time sz is interrupted, it should send a ZDATA header followed by
       another defective packet.  If the receiver does not  detect  five  long
       data packets, the Attn sequence is not interrupting the sender, and the
       Myattn string in sz.c must be modified.

       After 5 packets, sz stops the "transfer" and prints the total number of
       characters  "sent"  (Tcount).   The  difference between Tcount and 5120
       represents the number of characters stored in various buffers when  the
       Attn sequence is generated.

BUGS
       Calling  sz  from  most  versions  of  cu(1)  doesn't work because cu's
       receive process fights sz for characters from the modem.

       On at least one BSD system, sz would hang or exit when it got within  a
       few  kilobytes  of the end of file.  Using the "-w 8192" flag fixed the
       problem.  The real cause is unknown, perhaps a bug in  the  kernel  TTY
       output routines.

       Programs  that  do  not  properly implement the specified file transfer
       protocol may cause sz to "hang" the port for a  minute  or  two.   This
       problem  is  corrected by using ZCOMM, Pro-YAM, or other program with a
       correct implementation of the specified protocol.

       Many programs claiming to support YMODEM only support  XMODEM  with  1k
       blocks, and they often don't get that quite right.

       XMODEM  transfers  add up to 127 garbage bytes per file.  XMODEM-1k and
       YMODEM-1k transfers use 128 byte blocks to avoid extra padding.

       YMODEM programs use the file length transmitted at the beginning of the
       transfer  to prune the file to the correct length; this may cause prob-
       lems with source files that grow during the  course  of  the  transfer.
       This  problem  does not pertain to ZMODEM transfers, which preserve the
       exact file length unconditionally.

       Most ZMODEM options are merely passed to the receiving program; some do
       not implement all these options.

       Circular  buffering  and  a  ZMODEM  sliding window should be used when
       input is from pipes instead of acknowledging frames  each  1024  bytes.
       If no files can be opened, sz sends a ZMODEM command to echo a suitable
       complaint; perhaps it should check for the presence  of  at  least  one
       accessible  file before getting hot and bothered.  The test mode leaves
       a zero length file on the receiving system.

       A few high speed modems have a firmware bug that drops characters  when
       the  direction of high speed transmissson is reversed.  The environment
       variable ZNULLS may be used to specify the  number  of  nulls  to  send
       before  a  ZDATA frame.  Values of 101 for a 4.77 mHz PC and 124 for an
       AT are typical.



lrzsz-0.12b                        2.6.1996                              SZ(1)