RRBACKUP.CMD - REXX + RAR Backup Utility
Version 1.1 (C) 2003 Alex Taylor
RRBACKUP is a REXX-based utility for backing up directory trees or entire
partitions under OS/2. It uses the RAR archiver (see 'About RAR', below)
to create its backup archives. The archives are saved to a local or
network drive, and may subsequently be copied onto backup media such as
CD-R or DVD-R.
RRBACKUP was designed to provide a front-end to RAR's powerful backup
facilities, without the need for complex and arcane command-line syntax.
It tries to use 'sensible' defaults when creating backups, and provides a
relatively straightforward set of command-line options. It also supports
backing up to remote LAN drives.
To use RRBACKUP, you must have the following:
* The RAR archiver (OS/2 version); it must be named RAR32.EXE, and be
available on the PATH. Version 3.00 or later is recommended.
* The EMX runtime DLLs (required by RAR), available on the LIBPATH.
* OS/2 REXX must be installed, including the REXXUTIL library.
* Sufficient hard drive space (either locally or on the LAN) for storing
the backup archives.
As noted under 'Requirements', RAR, EMX and REXX must all be installed and
working. Copy RRBACKUP.CMD to a suitable location (preferably on your PATH),
and invoke it with the following syntax:
where [parameters] consists of one or more of the following, separated by
spaces, in any order:
The top-level name of the directory to be backed up. To
back up an entire partition, enter the drive specification
followed by a backslash, e.g. 'C:\'. You can also back up
a single file by specifying the fully-qualified filename.
NOTE: The source parameter is the only valid parameter which
is not preceded by a '-' or '/' character. The first such
parameter which is specified on the command line will be
assumed to be the source parameter; any other parameter not
preceded by '-' or '/' will be ignored.
By default, RRBACKUP backs up the entire directory tree specified by the
source parameter, including subdirectories. It also clears the archive
attributes for each file and directory, if possible.
This behaviour can be altered by using one of the following three options:
/COPY Back up all files, but do not clear the archive attributes.
(The term comes from the implication that we are 'copying'
the files for some purpose other than archiving.)
/DIFF Back up only files which have their archive attributes set,
but do not clear the archive attributes on these files.
This is known as a 'differential' backup, since the presumed
effect is to back up only those files which have been
changed or added since the most recent non-differential
(full or incremental) backup.
/INC Back up only files which have their archive attributes set,
and clear the archive attributes on these files. This is
known as an 'incremental' backup; the presumed effect is to
back up only those files which have been changed or added
since the most recent backup of any kind (full, incremental
You are strongly advised NOT to alternate the use of /INC or /DIFF when
backing up files relative to the same original full backup, as each option
only makes sense when used consistently.
To explain the difference between /DIFF and /INC a bit more clearly:
- In both cases, you are presumed to performed a full backup (without
/DIFF, /INC or /COPY specified) at some point previously.
- When all subsequent backups are performed using /DIFF, restoring the
system to its most recent state requires the full backup archive plus the
LAST differential archive.
- When all subsequent backups are performed using /INC, restoring the
system to its most recent state requires the full backup archive plus ALL
incremental archives, restored in chronological order from oldest to
Basically, /DIFF makes the logic of doing a restore easier; /INC, however,
tends to make backing up a lot faster as time goes on.
The main shortcoming of both /INC and /DIFF is that files which have been
removed (or renamed to something else) since the last full backup will come
back again when you do a restore. At present, only a full backup can pick
up deleted files and directories.
Note that performing a /COPY backup has no effect on subsequent differential
or incremental backups (which is, of course, the purpose of the option).
The following parameters are used to customize the backup process:
/D Append the current date (in the form YYYYMMDD) to the name
of the backup archive(s). Do not use this option if the
archives are being written to a FAT partition, as it will
increase the archive filenames well beyond 8.3 characters.
/L: Specify the name of a log file to record the output from
RAR. If this option is not specified, the output will
simply be displayed on the screen.
/N: Specify the name of the backup archive(s). This is a string
which must be a legal filename (without extension) for the
filesystem on which the archives will be written. If this
option is not specified, the default archive name is
/O Only back up the top level of the specified directory; do
not recurse into subdirectories.
/S: Specifies the maximum size of each archive file, in MB. If
the archive exceeds this size, it will be split up into
multiple files, each of which (except the last) will be
exactly this size. If not specified, the default is 630 MB.
The maximum allowable size is probably 2048 MB, given that
RAR likely does not use the OS/2 large-file-access APIs.
/T: Target directory into which the archive files will be
written. This is normally a drive or directory specification.
However, a UNC-style LAN resource name (of the form
\\servername\resource) may also be specified; in this case,
the /U and /P parameters are also required unless you are
already logged on to the LAN.
/X: Filenames or masks of files to exclude from the backup.
Note that the file "WP ROOT. SF" is always excluded
/Y Do not prompt the user for confirmation; start the backup
The following parameters are required if and only if the /T parameter
specifies a UNC-format LAN resource name, AND you are not currently
logged on with a valid LAN user ID and password.
/P: LAN password to use; this parameter is required if the
/U parameter is specified.
/U: LAN user ID to log on with. Requires the /P parameter
to be specified as well (otherwise RRBACKUP will abort).
Once the backup is complete, this user will be logged
/V: Verification type to use when logging on to the LAN.
must be one of the following:
NONE No domain; verify with resource owner.
DOMAIN Verify on the default domain controller.
Verify on the domain named .
If this option is not specified, the default verification
method defined in IBMLAN.INI will be used.
The syntax may look fairly involved, but most of these parameters are optional.
A standard partition backup with default options can omit most of them. Some
1) Back up all of drive D: to an archive file (or files) named 'BACKUP_D' in
the directory F:\BACKUPS:
rrbackup d:\ /n:backup_d /t:f:\backups
2) Back up all of drive C: (except for any file named 'SWAPPER.DAT') to an
archive file (or files) on drive Z: named 'CDRIVE', with today's date
rrbackup c:\ /n:cdrive /d /x:swapper.dat /t:z:\
3) Back up all of drive E: to the LAN directory \\SERVER\BACKUPS, logging
on to the Peer workstation with the user ID 'admin' and password 'secret',
without changing the archive bits of the files backed up; the archive
file(s) will be called simply 'BACKUP':
rrbackup e:\ /t:\\server\backups /u:admin /p:secret /v:none /copy
4) Back up the directory F:\MYDATA to archive file(s) named 'MYDATA' in the
directory W:\TEMP, with a maximum archive file size of 10 MB, without
prompting for confirmation, and excluding all files whose names end with
'.BAK' and '.LOG':
rrbackup f:\mydata /t:w:\temp /s:10 /n:mydata /x:*.bak,*.log /y
Generally, you will want to run multiple backups of various sources (most
commonly, of different drives) in one go. RRBACKUP itself provides no built-
in facility for doing this, so you will probably want to write your own
As RRBACKUP is a REXX script, you need to use the OS/2 'call' command to run
it from a script. For example, using a standard (non-REXX) batch file:
call rrbackup c:\ /n:backup_c /t:f:\backups /x:swapper.dat /y
call rrbackup d:\ /n:backup_d /t:f:\backups /x:d:\tmp\* /y
Or, from REXX:
/* My backup script */
bkp_target = 'f:\backups'
'@call rrbackup c:\ /n:backup_c /t:'bkp_target '/x:swapper.dat /y'
'@call rrbackup d:\ /n:backup_d /t:'bkp_target '/x:d:\tmp\* /y'
(In the case of REXX, make sure that the 'call' command appears INSIDE the
quotes, so that it will be processed by CMD and not by the REXX interpreter.)
To restore a directory or partition from an archive file, simply invoke RAR
directly. The syntax is:
where is the name of the (first) archive file, and is the
top-level directory into which the files should be restored (in the case of
a full partition backup, this would be the root directory of the partition).
If the backup files are located on physically separate media, such as a set
of CD-Rs, use the syntax:
This will cause RAR to pause and prompt you to insert the medium containing
the next volume when necessary.
To restore F:\BACKUPS\BACKUP_D.RAR to drive D:, use:
rar x f:\backups\backup_d.rar d:\
When restoring a complete partition like this, you are advised to reformat
the partition first.
* RRBACKUP is not currently designed to handle spaces in its command-line
options. This is mainly a problem if you want to specify an explicit file
or path (e.g. with the /T or /X parameters) whose name contains spaces.
* RAR cannot clear the archive bits on files which are currently locked in-use;
nor can it successfully back up the extended attributes of such files. This
makes it unsuitable for backing up the currently-booted system volume. You
are recommended to boot to a maintenance volume before backing up your system
drive. (Make sure that your maintenance volume has EMX, RAR and REXX
installed, including the REXXUTIL.DLL library.)
* RRBACKUP only supports backing up to random-access disks. Direct backups to
tape or CD/DVD is not supported, although the archive files can be copied to
such media after the fact.
* There is no graphical user interface (and probably there never will be).
RRBACKUP also does not currently make use of configuration files; all desired
options must be specified on the command line.
RAR is a command-line file archiver & compressor similar to ZIP and ARJ.
Current versions are available from https://www.rarlab.com/download.htm or
the Hobbes OS/2 archive.
Unlike ZIP or ARJ, RAR is shareware: it is free to download and evaluate
(the license mentions a 40-day evaluation period, although the program will
continue to function indefinitely). Some features like advanced logging
are only available to registered users, although RRBACKUP is not equipped
to take advantage of them.
RRBACKUP uses RAR because it has some specific advantages:
* Archives can be split into multiple volumes, based on a prespecified
* Compression is slightly better than ZIP or ARJ.
RAR is (C) 1993-2004 Eugene Roshal; see https://www.rarlab.com for more