neulab/tldr huggingface dataset:
delete-old-log-files bool Enable or disable deletion of old log files.  If rvm deletes an archive to make more space in a vault, then, if delete-old-log-files is enabled, rvm will also search for and delete the archive's log file from the log directory.
Valid values for bool are
"y"|"n", "yes"|"no", "t"|"f", "true"|"false", "1"|"0", or "on"|"off"
This command is not required.  Rvm will use "on" if no other setting is found.  Multiple uses of this command will overwrite any previous value within the same context.
delete-old-report-files bool Enable or disable deletion of old report files.  If rvm deletes an archive to make more space in a vault, then, if delete-old-report- files is enabled, rvm will also search for and delete the archive's report file from the log directory.
logging-level option
Specify the degree of verbosity used when writing to the log file. Valid values for option are:
manager Log only the messages that come from the controlling parent rvm process.
child Log messages from the controlling parent and from child rvm processes.
rsync Log all messages from rvm and from rsync.
Rvm will use the default value of "child" if no other setting is provided.  Multiple use of this command will overwrite any previous value.
error-logging-level option
Specify the degree of verbosity used when writing to the log file when retrying a failed rsync command.  Valid values are the same as for the logging-level command above.
Rvm will use the default value of "rsync" if no other setting is provided.  Multiple use of this command will overwrite any previous value.
rsync-local-path path
Specify the location of the rsync program on the local host.  The value for path should be an absolute pathname.
At the time that rvm is compiled, if rsync was found in the one of the directories specified by the PATH environment variable, then that value will be used by default.  Otherwise, if rsync could not be found at compile time, and rsync-local-path is not specified, rvm will exit with an error.
Multiple uses of this command will overwrite any previous value.
rsync-parallel integer
The number of jobs rvm is to process in parallel.  Rvm will spawn up to integer child processes to handle jobs from the job list.  When one job completes that child will exit and another child process will be created to handle the next available job.  If rvm encounters an error when attempting to create a child process, then rvm will print an error message to the log file and attempt to create a new process again at a later time.
Valid values are any integer greater than 0.  Rvm will assume the default value of 1 if no other setting is found.  Multiple uses of this command overwrite any previous value.
delete-command-path path
Specify the location of the program or script of your choice for recursively deleting a directory.  The value for path should be an absolute pathname.
The program or script should not return until deletion completes. The program or script is expected to return an exit code of zero on success, and non-zero on failure.  If a value for path is not specified, then the internal recursive delete function is used.
io-poll-interval integer
The number of seconds to sleep between polling for I/O from child processes.  Valid values are any positive integer value including 0. Rvm will assume the default value of 1 if no other setting is found. Multiple uses of this command overwrite any previous value.
timestamp-resolution option
A configuration setting specifying the depth of resolution used in creating timestamps.  Valid values for option are:
year Use a four-digit year as the archive timestamp. Example: 2003
month Same as year, followed by '-' and a two-digit month. Example: 2003-09
day Same as month, followed by '-' and a two-digit day of the month. Example: 2003-09-10
hour Same as day, followed by '.' and a two-digit hour in 24-hour format. Example: 2003-09-10.13
minute Same as hour, followed by a two-digit minute. Example: 2003-09-10.1359
second Same as minute, followed by a two-digit second. Example: 2003-09-10.135933
Timestamps are used to generate archive directory names and the basename used for log files and report files.  A new timestamp is generated each time rvm is executed.  The timestamp resolution setting allows the archive administrator to control to what degree timestamps are created.  For instance, a timestamp resolution of "year" would result in a new archive being created once a year.  If rvm is then run a second time within the same year then rvm will update the existing archive rather than create a new archive.  At the other end of the scale, a timestamp resolution of "second" would result in a new archive being created each second (or more likely, each time rvm is run, since rvm will probably take longer than one second to complete an archive of any significant size).
The default value used is "day".  Multiple uses of this command will overwrite any previous value.
NOTICE: Care should be taken when modifying this value.  If rvm is executed twice with the same timestamp-resolution period, and the first instance of rvm has not completed, then that archive may be corrupted.
vault path
Designate the directory path to use as a vault.  More than one vault may exist on the same logical disk partition, although it is recommended that vaults exist on separate physical devices, or at least on separate logical partitions.  This is for the safety and integrity of the archives in the event of disk corruption or failure.
If path is a relative pathname, then it is assumed to be relative to the location from which rvm is executed.  If path does not exist then rvm will exit with an error.  If path contains wildcard characters, then all matching pathnames are used as vaults.  If no matching pathnames are found then rvm will exit with an error.
Once rvm has finished reading all of it's configuration files, if no usable vaults exist then rvm will exit with an error.
Multiple uses of this command will add to the list of vaults.
vault-overflow-behavior keyword
Define how rvm should handle a vault that is approaching maximum capacity.  Valid values for keyword are:
quit If there is insufficient space available on the selected vault then exit with an error.
delete-oldest If there is insufficient space available on the selected vault, then delete the oldest archive from the vault and check for available space again.  If, after deleting the oldest archive, there is still insufficient space, exit with an error.  Only one archive deletion is allowed per execution, after that rvm will exit with an error if there is insufficient space.
delete-until-free If there is insufficient space available on the selected vault, then delete the oldest archive from the vault and check for available space again.  If there is still insufficient space in the vault, then continue deleting the oldest archive found until either sufficient space is available or there are no old archives left. If there is still insufficient space, then exit with an error. Caution should be used by the archive administrator when using this setting.
Rvm will assume a value of quit by default.  Multiple uses of this command overwrite any previous value.
NOTICE: Rvm will check the free space on the selected vault several times during execution.  If a child process exits with an error, the vault is checked to see if it has exceeded it's overflow threshold. If so, and vault-overflow-behavior is set to either "delete-oldest" or "delete-until-free", then rvm will attempt to remove the oldest archive in the vault and retry the failed job.  If, during archival, the size of an archive increases dramatically (to 50% of a vault's capacity or more) then the use of "delete-oldest" or "delete-until- free" could cause rvm to continually delete older archives, which may not be the desired behavior.
vault-overflow-blocks integer
Define for rvm a threshold used to decide when a vault has become alarmingly close to full capacity.  Rvm is to consider the selected vault to have exceeded it's overflow capacity if there is less than integer percent of free blocks left on the logical partition in which the vault resides.  The value for integer must be between 0 and 50 inclusively.
Rvm will use a default value of 15 if no other setting is found. Multiple uses of this command will overwrite any previous value.
vault-overflow-inodes integer
Define  for rvm a threshold used to decide when a vault has become alarmingly close to full capacity.  Rvm is to consider the selected vault to have exceeded it's overflow capacity if there is less than integer percent of free inodes left on the logical partition in which the vault resides.  The value for integer must be between 0 and 50 inclusively.
NOTICE: Some filesystems do not use inodes, such as FAT formatted filesystems used by Windows.  If such a filesystem is used to house a vault then the operating system may report that there are 0 free inodes available.  For such filesystems it is required that vault- overflow-inodes be set to 0 to avoid erroneous filesystem overflow errors.
vault-selection-behavior keyword
Specify the method by which rvm is to select the next vault from the list of available vaults.  Valid values for keyword are:
max-free Determine the amount of free space available on each vault and choose the vault with the most free space.  If all vaults are equally filled, then fall back to using the round-robin method.
round-robin Determine the last vault used the last time rvm was executed and select the next vault from the list of available vaults.  If the last vault in the list was the last vault used, then begin again with the first vault in the list.
Rvm will use the default value "round-robin" if no other setting is found.  Multiple uses of this command overwrite any previous value.
vault-locking bool Turn on or off vault locking to prevent subsequent instances of rvm from using the same vault while this instance of rvm is still running.
If disabled, rvm will not attempt to lock a vault, and rvm will ignore any locks created by other instances of rvm.  (Note: This could be dangerous.)
If enabled, then rvm will lock the vault that it's using.  Subsequent instances of rvm run with vault-locking enabled will check to see if a vault is locked when selecting a vault.  The behavior of rvm under vault-locking is as follows:
- If a locked vault contains an archive with the same timestamp as the one being used by rvm, then rvm will exit with an error.
- Otherwise, if a vault is locked, then that vault is ignored during the vault selection process, and the next best vault will be chosen instead.
- Otherwise, if all vaults are locked, then rvm will exit with an error.
Valid values for bool are:
Configuration commands in a default context specify a default behavior to be assumed for subsequent archive jobs.  Multiple default contexts may be used to set and reset default values.  When multiple default contexts are used, all values from the previous default context are cleared.  When default settings are reset, all subsequent jobs are assigned values from the new default settings, while previous jobs are left unaffected.
archive-path keyword[/keyword...]
This command specifies how rvm should generate the archive job subdirectory under which to store files and directories backed up from this archive job.  The complete path to an archive job's files follows from the root of the filesystem, down the path of the selected vault, into the archive subdirectory, and then down this user-specific path.
The value for this command consists of one or more options separated by a directory slash character with no whitespaces allowed in between.  Valid values for keyword are:
jobname The name assigned to this job.
groupname The group name assigned to this job.
hostname The remote machine's host name.
pathname The path currently being archived.  Each job may specify multiple paths, therefore the value of archive-path must be calculated for each path listed in a job.
permutation A permutation of the path currently being archived.  The permutation process removes any preceding or trailing slashes, and changes all intermediate slashes in the path name to dashes.  An example permutation of the path "/var/spool/cron/crontabs" would be "var-spool-cron-crontabs".
(literal) A literal string may be used by surrounding the string with double quotes.  Directory slash characters are not allowed within the string, and double quotes within the string must be escaped by preceding them with a '\' character.  An example could be: archive-path groupname/"Samba-Mounted-Hosts"/permutation
Rvm will use the default value "hostname/pathname" if no other setting is found.  Multiple uses of this command will overwrite any previous values within the same context.
NOTICE: Great care should be taken when using this command, as incorrect settings could result in a corrupted archive.  Consider the following configuration:
vault /export/vault1 <default> archive-path groupname </default> <job> groupname cartoon hostname ren path /var/spool/cron/crontabs </job> <job> groupname cartoon hostname stimpy path /var/spool/cron/crontabs </job>
For the above configuration, files from the host ren:/var/spool/cron/crontabs and files from the host stimpy:/var/spool/cron/crontabs are both placed in the directory /export/vault1/timestamp/cartoon/.  If both ren and stimpy contain crontabs for root, then root's crontab file from stimpy will overwrite root's crontab file from ren, resulting in a corrupted archive.
clear keyword
Erase a previous default value for a specific configuration setting. This override does not change default settings nor affect subsequent jobs, only the current job is affected.  Valid values for keyword are:
archive-path Clear the default archive-path value.
exclude-from Clear the list of files in the exclude list.
groupname Clear the default groupname.
hostname Clear the default hostname.
include-from Clear the list of files in the include list.
jobname Clear the job name.
paths Clear the list of paths to be archived.
rsync-behavior Clear the rsync behavior table.
rsync-options Clear the list of options to pass to the rsync binary.
ssh-options Clear the list of options to pass to the ssh binary.
rsync-remote-user Clear the username to pass to rsync to use when connecting to a remote machine.
rsync-remote-port Clear the port number to pass to rsync to use when connecting to a remote machine.
rsync-remote-path Clear the pathname of rsync on the remote machine.
rsync-remote-path Clear the module name used when starting an rsync server on a remote machine over a shell connection.
This command can be used to override default values either set by rvm or set in the last default context.
exclude-from path
Specify a file to pass to the rsync program using the --exclude-from command line option.  The rsync man page should be consulted on the syntax and usage of this file.  When rvm constructs the command line to pass to rsync, files listed in the exclude-from list are passed before files listed in the include-from list.
If path is a relative pathname, then it is assumed to be relative to the directory of the configuration file in which this command appears.  If path contains wildcard characters, then all matching files will be passed to rsync in alphabetical order, each using a separate --exclude-from command line option.  If no matching files are found then rvm will exit with an error.
Multiple uses of this command will generate a list of pathnames within the current context, all of which will be passed to rsync, each on a separate --exclude-from command line option.
groupname name
This configuration setting assigns a group name to a job.  The value of name may be any string of valid filename characters except a directory slash.
This command is only required if the "groupname" keyword is used by archive-path.
Multiple uses of this command will overwrite any previous values within the same context.
hostname name
Assign a hostname to a job.  If rsync must connect to a remote host for this job, then it will connect to name.
This command is only required if:
- This job either must connect to a remote host via RSH or SSH, or to an rsync server, as specified by the rsync-connection-type command.
- The "hostname" keyword is used by archive-path (which it is by default).
Multiple uses of this command will overwrite any previous value within the same context.
include-from path
Specify a file to pass to the rsync program using the --include-from command line option.  The rsync man page should be consulted on the syntax and usage of this file.  When rvm constructs the command line to pass to rsync, files listed in the exclude-from list are passed before files listed in the include-from list.
If path is a relative pathname, then it is assumed to be relative to the directory of the configuration file in which this command appears.  If path contains wildcard characters, then all matching files will be passed to rsync in alphabetical order, each using a separate --include-from command line option.  If no matching files are found then rvm will exit with an error.
Multiple uses of this command will generate a list of pathnames within the current context, all of which will be passed to rsync, each on a separate --include-from command line option.
Assign a file or directory to be archived in a job.
This command is required to appear at least once, either in a job context or in a previous default context.
This command has no default value.  Multiple uses of this command will append to a list of pathnames to be archived.
NOTICE: When archiving an entire directory tree, a trailing '/' must appear at the end of path, and the -r option must be passed to rsync via the rsync-options command.
rsync-behavior exit-code = action
If an rsync command returns a non-zero exit code, rvm may retry the command up to the number of times specified by the rsync-retry-count configuration setting.  Rvm may also be directed to modify it's command line for rsync, or to take some specific action, depending on the exit code returned.  This command is used to specify how rvm should handle different exit codes that may be returned by rsync. Valid values for exit-code may be an integer value between 0 and 255 inclusively.  The asterisk character, '*', may also be used as a wildcard to mean any exit code not specified by any other rsync- behavior command.  When the given exit code is encountered the associated action is taken.  Valid values for action are:
ok Ignore the error code returned by rsync and pretend rsync exited successfully.
fail Give up immediately without attempting to retry the rsync command. (See rsync-retry-count.)  This is most useful for exit codes from which retrying will not yield better results.  For example, if the current job is configured to connect to a remote host using SSH, and SSH is reporting that rsync cannot be found on the remote host.
retry Try the rsync command again exactly as before.  Useful for overcoming intermittent connectivity problems.
retry-without-hardlinks Try the rsync command again, except this time disable the option that allows rsync to create hardlinks for files that have not changed from previous archives.  (This is useful in situations where the older archive chosen as the hardlink source contains corrupted file modes.)
A complete list of known rsync exit codes are, as found in errcode.h of the rsync source tree:
0   Success
1   Syntax or usage error
2   Protocol incompatibility error
3   Errors selecting I/O files or directories
4   Requested action not supported
5   Error starting client-server protocol
10  Error in socket I/O
11  Error in file I/O
12  Error in rsync protocol data stream
13  Errors with program diagnostics
14  Error in IPC code
20  Status returned when sent SIGUSR1, SIGINT
21  Some error returned by waitpid()
22  Error allocating core memory buffers
23  Partial transfer
24  Some files vanished before they could be transferred
25  The --max-delete limit stopped deletions
30  Timeout in data send/receive
124 The command executed by SSH exited with status 255
125 The command executed by SSH was killed by a signal
126 The command given to SSH cannot be run
127 The command given to SSH cannot be found
Multiple instances of this directive may be used to specify different actions for different exit codes.
Rvm will use the following settings if no other settings are found:
rsync-behavior        * = retry rsync-behavior        0 = ok rsync-behavior        1 = fail rsync-behavior        2 = fail rsync-behavior        4 = fail rsync-behavior        23 = retry-without-hardlinks rsync-behavior        124 = fail rsync-behavior        125 = fail rsync-behavior        126 = fail rsync-behavior        127 = fail
Multiple uses of this command will overwrite any previous value for the same exit-code within the same context.
rsync-connection-type keyword
There are four ways of using rsync to update files.  One method is to use rsync in a local mode, where files and directories in one location on the local host are updated by comparing them to files and directories in another location also on the local host.  This method may be used to archive files mounted on the local machine, either from a physical device, an NFS mount, or a Samba mount.  The second method of using rsync is to connect to a remote host via RSH or SSH. The third method is to use rsync to connect to an rsync server.  This command changes the way that rvm will use rsync when processing an archive job.  Lastly, the fourth method, remote-rsync-local-dir, uses ssh to log into the remote host and then run rsync to back up to a locally-mounted directory.  This last option is useful for storage clusters that mount directly to the client.
Valid values for keyword are:
local Use rsync in local mode to archive files from a source that is mounted on the local machine.
remote Use rsync to archive files from a remote host using RSH or SSH.
server Use rsync to archive files from a remote host running an rsync server.
remote-rsync-local-dir Use ssh to connect to the remote host, and then run rsync with a locally-mounted destination directory.
Rvm will use the default value of "remote" if no other setting is found.
rsync-hardlink bool Turn on or off the ability to hardlink unchanged files from an older archive.
rsync-multi-hardlink bool Turn on or off the use of multiple hardlink sources (supported by rsync version 2.6.4 and newer).  Turning this option on also implies turning on rsync-hardlink.
This command is not required.  Rvm will use "off" if no other setting is found.  Multiple uses of this command will overwrite any previous value within the same context.
rsync-multi-hardlink-max integer
The maximum number of hardlink sources to pass to rsync.  At the time of this writing rsync will support up to 20 hardlink sources.
Valid values are any integer greater than 0.  Rvm will assume a default value of 20 if no other setting is found.  Multiple uses of this command overwrite any previous value.
rsync-options options Define the command line options that rvm is to pass to rsync. Command line options listed here should not include --rsync-path, --hard-links, --link-dest, --exclude-from, --include-from, or the local and remote host or path.  These options are added by rvm automatically when generating the complete command line to pass to rsync.
Use of this command may result in a long line, depending on the number of options that the archive administrator wishes to pass to rsync.  For greater readability and flexibility there is a second way of specifying options to pass to rsync.  See the <rsync-options> block command below.
When rvm parses this line to pass it to rsync, each of the options listed will be parsed into separate strings.  If one of your options requires whitespace (for instance, if you are backing up a directory named My Music/, then you can escape the whitespace in the pathname by entering it as My\ Music.  Escapes work with spaces and tabs, characters which are both otherwise considered delimiters separating options.
This command is not required.  This command has no default value. Multiple uses of this command append to any previously defined values, including any value previously set by an <rsync-options> block command.
ssh-options options Define the command line options that rvm is to pass to ssh. Inclusion of the option 'BatchMode=yes' is automatic.  This option only affects remote-rsync-local-dir rsync connection types.
<rsync-options> ... </rsync-options>
Options to pass to the rsync program may be specified by placing those options inside an rsync-options block.  An rsync-options block begins with the text "<rsync-options>" on a line by itself, and ends with the text "</rsync-options>" on another line by itself.  Lines in between are considered to be literal text to pass to the rsync program, with the following exceptions: Blank lines and lines beginning with a '#' are ignored.
This form of passing options to rsync allows the archive administrator to break what could be one long line into multiple lines for greater readability.  (It also allows easy addition or removal of options by simply commenting or uncommenting a line.)
When rvm parses these lines to pass them to rsync, each of the options listed will be parsed into separate strings.  If one of your options requires whitespace (for instance, if you are backing up a directory named My Music/, then you can escape the whitespace in the pathname by entering it as My\ Music.  Escapes work with spaces and tabs, characters which are both otherwise considered delimiters separating options.
This command is not required.  This command has no default value. Multiple uses of this command overwrite any previous value within the same context, including any value previously set by the rsync-options command.
<ssh-options> ... </ssh-options> Options to pass to the ssh program may be specified by placing those options inside an ssh-options block.  An ssh-options block begins with the text "<ssh-options>" on a line by itself, and ends with the text "</ssh-options>" on another line by itself. Lines in between are considered to be literal text to pass to the ssh program, with the following exceptions:  Blank lines and lines beginning with a '#' are ignored.
THis form of passing options to ssh allows the archive adminsitrator to break what could be one long line into multple lines for greater readability.  (It also allows easy addition or removal of options by simple commenting or uncommenting a line.)
When rvm parses these lines to pass them to ssh, each of the options listed will be parsed into separate strings.  If one of your options requires white space then you can escape the whitespace by prefixing a leading '\'.  Escapes work with spaces and tabs, characters which are both otherwise considered delimiters separating options.
This command is not required.  This command has no default value. Multiple uses of this command overwrite any previous value within the same context, including any value previously set by the ssh- options command.
rsync-remote-path path
Specify the location of the rsync program on a remote host for a particular job.  This value is only necessary for remote connections via RSH or SSH.  It is not needed for local sources or connections to an rsync server.  The value for path should be an absolute pathname.
This command is not required.  Rvm will use the same value specified for rsync-local-path if no other setting is found. Multiple uses of this command overwrite any previous value within the same context.
rsync-remote-module module-name
Specify the module name to use when connecting to an rsync server on a remote host or over an SSH or RSH shell connection.  When using this option, set rsync-connection-type to server and set the appropriate --rsh=shell-options rsync command line option in the rsync-options command.
rsync-connection-type server rsync-options -av --rsh-"/usr/bin/ssh -l ssh-user" rsync-remote-module ftp
See the rsync and rsyncd.conf man pages for more information on modules.
rsync-remote-user username
Define the user name to use when connecting to a remote host using either RSH, SSH, or an rsync server.
This command is not required.  This command has no default value. Multiple uses of this command overwrite any previous value within the same context.
rsync-remote-port integer
Define the port number to connect to when using rsync to connect to a remote host via RSH, SSH, or an rsync server.
rsync-retry-count integer
The number of times rvm is to retry a failed rsync command.  This setting is used in conjunction with the rsync-behavior setting to determine how to handle a failed rsync command based on it's exit code.
Rvm will use the default value of 3 if no other setting is found. Multiple uses of this command will overwrite any previous value within the same context.
rsync-retry-delay integer
The number of minutes to delay after a failed rsync command before retrying.  Rvm will use the default value of 0 if no other setting is found.  Multiple uses of this command will overwrite any previous value within the same context.
rsync-timeout seconds
Instruct the rvm child processing the current job to wait seconds seconds before assuming that rsync has hung.  If there is no I/O from rsync after seconds seconds, rvm will kill rsync and try again (up to rsync-retry-count times).
Configuration commands in a job context specify how to archive files and directories from a single source, where a source is either a set of files and directories mounted locally, a set of files and directories on a remote host, or a set of files and directories hosted on an rsync server. Each job will assume a set of default values, either from rvm or from the last default block.
All of the commands listed above for a default context also apply to a job context, with the addition of the following commands:
jobname string
Assign a name to this job.
Use of this command is required only if the "jobname" keyword is used in the archive-path command.
An example configuration file might look like the following: # # RVM Manager Configuration # # - Commands outside of a <default> block or #   a <job> block are assumed to be of a global #   context. #
# # After all archive jobs have been completed, # create relative symbolic links here. # # We will arrange to export this directory and # all vault directories via NFS so that users # can cd into the catalog and select an archive # by it's timestamp, then peruse their files # for what they're looking for. # link-catalog-dir /export/archive/catalog
# # Create log files under this directory. # log-dir /var/log/rvm
# # The location of the rsync program on this # machine.  This path must not contain # wildcard characters, and should be an # absolute path. # rsync-local-path /usr/local/bin/rsync
# # How many archive jobs to process in parallel. # rsync-parallel 5
# # How often to poll children for a change in I/O state. # io-poll-interval 5
# # The resolution of timestamp we want. # timestamp-resolution day
# # Where are the vaults?  Notice that wildcard # characters are allowed here: # vault /export/archive/raid/*/daily-archives
# # How to select the next vault to use: # vault-selection-behavior round-robin
# # What do we do when the vault gets too close # to full capacity? # vault-overflow-behavior delete-until-free
# # What percentage of blocks and inodes must be # free before we declare the vault too full to # continue archiving? # vault-overflow-blocks 10 vault-overflow-inodes 10
# # Set up some default values to be assumed by # all jobs read below: # <default> archive-path hostname/pathname exclude-from /etc/rvm/excludes/*
# # Some default paths to back up on all hosts. # # Notice that wildcard characters are not # allowed here. # # Files will be stored under: # /<vault>/<archive>/<hostname>/var/spool/... # /<vault>/<archive>/<hostname>/export/... # path /var/spool path /export
# # Define how rvm is to handle non-zero exit # codes from rsync.  The values below happen to # be the same values that are assumed by rvm by # default, but they're listed here for the sake # of example: # rsync-behavior * = retry rsync-behavior 1 = fail rsync-behavior 2 = fail rsync-behavior 4 = fail rsync-behavior 23 = retry-without-hardlinks rsync-behavior 124 = fail rsync-behavior 125 = fail rsync-behavior 126 = fail rsync-behavior 127 = fail rsync-connection-type remote
# # What options should be pass to rsync? # <rsync-options> -a -e "/usr/bin/ssh -l root" -v --checksum --delete --delete-excluded --force --ignore-errors --one-file-system --stats --progress </rsync-options> rsync-retry-count 5 </default>
# # Archive Job 1: Back up alces # <job> hostname alces # # In addition to /var/spool and /export, also # back up the following: # # Files will be stored under: # /<vault>/<archive>/<hostname>/export/home/a/... # /<vault>/<archive>/<hostname>/export/home/b/... # /<vault>/<archive>/<hostname>/export/home/c/... # /<vault>/<archive>/<hostname>/export/home/d/... # /<vault>/<archive>/<hostname>/export/home/e/... # path /export/home/a path /export/home/b path /export/home/c path /export/home/d path /export/home/e </job>
# # Archive Job 2: Back up fragaria # <job> hostname fragaria path /export/home/a path /export/home/b </job>
# # Set some new defaults for samba-mounted # directories under /k-boxes. # <default> # # The following must be re-defined because # each default block completely clears all # values defined in the last default block: # exclude-from /etc/rvm/excludes/*
# # (Good thing these are actually the default # settings for rsync-behavior.  It would be a # pain to have to enter it over and over # again...  But then, you could always place # these commands in a separate file and # "include" them.) # rsync-behavior * = retry rsync-behavior 1 = fail rsync-behavior 2 = fail rsync-behavior 4 = fail rsync-behavior 23 = retry-without-hardlinks rsync-behavior 124 = fail rsync-behavior 125 = fail rsync-behavior 126 = fail rsync-behavior 127 = fail rsync-retry-count 5
# # These settings do change, however: # archive-path group/name/"files" groupname k-boxes rsync-connection-type local <rsync-options> -a -v --checksum --delete --delete-excluded --force --ignore-errors --one-file-system --stats --progress </rsync-options> </default>
# # Back up files from David's machine # <job> # Files will be stored under: # /<vault>/<archive>/<group>/<name>/files/... # ...or, to be more specific: # /<vault>/<archive>/k-boxes/david/files/... jobname david path /k-boxes/david/files </job>
# # Back up files from Joe's machine # <job> # Files will be stored under: # /<vault>/<archive>/<group>/<name>/files/... # ...or, to be more specific: # /<vault>/<archive>/k-boxes/joe/files/... jobname joe path /k-boxes/joe/files </job>
# # The End #
Syntax Notation: Everyone seems to have their own form of EBNF notation to express a language syntax, therefore I define my own here:
- A syntactic part is written as an identifier surrounded by '<' and '>'.
- A syntactic assignment is written as a syntactic part, followed by the symbol "::=", followed by one or more syntactic parts that may be joined in various ways.  For a simple example: <foo> ::= <bar>
- Literal text is specified by wrapping the text in double quotes.  If the literal text contains special characters such as tab, newline, or the double quote character, they will appear using a C-style escape format using the '\' character.  Literal characters are wrapped in single quotes and use the same C-style escape format for special characters and the single quote character itself.  For example: <a> ::= 'a' <text> ::= "Hello World" <response> ::= "Tell him I said, \"Go away.\"" <newline> ::= '\n'
- A range of literal characters may be specified separating two literal characters with a '-' character, with no whitespace in between.  For example: <digit> ::= '0'-'9'
- Syntactic parts may be concatenated together in an unordered form by separating two or more syntactic parts with whitespace.  For example: The following: <foobar> ::= <foo> <bar> will match either <foo><bar> or <bar><foo>.
- Syntactic parts may be concatenated together in a specific order by separating two or more syntactic parts with a '+' character. Whitespace is allowed between syntactic parts, but not the newline or carriage return characters.  For example: <foobar> ::= <foo> + <bar>
- A choice between two or more syntactic parts may be defined by separating the choices with the '|' character.  For example: <right-or-wrong> ::= <right> | <wrong>
- Syntactic parts may contain subparts that are treated as a single entity by surrounding syntactic parts with '(' and ')'.  For example: The following: <foobarelem> ::= <elem> (<foo> <bar>) <elem> is equivalent to: <foobar> ::= <foo> <bar> <foobarelem> ::= <elem> <foobar> <elem>
- Optional syntactic parts are written by enclosing the syntactic part in '[' and ']'.  For example: <all-options> ::= [<option1>] [<option2>] [<option3>] <a-foo-or-bar-b> ::= "a" [ "foo" | "bar" ] "b"
- Syntactic parts may be concatenated together with no whitespace allowed between parts by separating the syntactic parts with the "<+" symbol. For example: A string with no whitespaces allowed: <alpha> ::= 'a'-'z' <no-ws-string> ::= <alpha> | <alpha> <+ <no-ws-string>
- Syntactic parts may be replicated using the format min*max<syntactic- part>, where min and max are optional.  For example:
a) A number consisting of 1 to three digits may be written as: <number> ::= 1*3<digit>
b) A number consisting of at least one digit: <number> ::= 1*<digit>
c) A double-quotes string consisting of zero to three characters: <alpha> ::= 'a'-'z' | 'A' - 'Z' <string> ::= '"' <+ *3<alpha> <+ '"'
- A specific number of replicates of a syntactic part may be specified using a variant of min*max<syntactic-part> written as num*<syntactic- part>.  For example: The following: <3-digit-number> ::= 3*3<digit> is the same as: <3-digit-number> ::= 3<digit>
RVM Configuration Syntax <RVMConfigurationFile> ::= <Global> + 1*(*<DefaultBlock> *<JobBlock>)
<ArchivePathKeyword> ::= "jobname" | "groupname" | "hostname" | "path" | "permutation" | ( "\"" <+ <FilenameString> <+ "\"" )
<ArchivePathSpecs> ::= <ArchivePathKeyword> <+ [ "/" <+ <ArchivePathKeyword> ]
<ArchivePath> ::= "archive-path" + ( "empty" | <ArchivePathSpecs> ) + '\n'
<BoolString> ::= "y" | "n" | "yes" | "no" | "t" | "f" | "true" | "false" | "1" | "0" | "on" | "off"
<Clear> ::= "archive-path\n" | "exclude-from\n" | "groupname\n" | "hostname\n" | "include-from\n" | "jobname\n" | "paths\n" | "rsync-behavior\n" | "rsync-options\n" | "rsync-remote-user\n" | "rsync-remote-path\n" | "rsync-remote-module\n"
<DefaultBlock> ::= <GenericBlock> *[<Path>]
<Default> ::= "<default>\n" + <DefaultBlock> + "</default>\n"
<ExcludeFile> ::= "exclude-from" + <WildcardPathString> + '\n'
<FilenameString> ::= <Any valid file or directory name>
<GenericBlock> ::= [<Group>] [<Host>] *[<IncludeFile>] [<ArchivePath>] [<Clear>] *[<ExcludeFile>] 1*<Path> *[<RsyncBehavior>] [<RsyncConnectionType>] [<RsyncHardlink>] [<RsyncOptions>] [<RsyncRemotePath>] [<RsyncRemoteUser>] [<RsyncRemotePort>] [<RsyncRetryCount>] [<RsyncTimeout>]
<Global> ::= 0*1<LinkDir> 0*1<LogDir> 0*1<DeleteOldLogFiles> 0*1<DeleteOldReportFiles> 0*1<LoggingLevel> 0*1<ErrorLoggingLevel> *<Include> 1<RsyncLocalPath> [<RsyncParallel>] [<IOPollInterval>] [<TimestampResolution>] 1*<Vault> [<VaultOverflowBehavior>] [<VaultOverflowBlocks>] [<VaultOverflowInodes>] [<VaultSelectionBehavior>]
<Group> ::= "groupname" + <String> + '\n'
<Host> ::= "hostname" + <String> + '\n'
<IncludeFile> ::= "include-from" + <WildcardPathString> + '\n'
<IncludeJob> ::= "include-job" + <WildcardPathString> + '\n'
<Integer> ::= <Any non-negative integer value>
<Integer-50> ::= <Any integer value from 0 to 50 inclusive>
<Integer-255> ::= <Any integer value from 0 to 255 inclusive>
<Job> ::= "<job>\n" + <JobBlock> + "</job>\n"
<JobBlock> ::= [<Name>] + <GenericBlock> + 1*<Path>
<Name> ::= "name" + <String> + '\n'
<LinkCatalogDir> ::= "link-catalog-dir" + <PathString> + '\n'
<LogDir> ::= "log-dir" + <PathString> + '\n'
<DeleteOldLogFiles> ::= "delete-old-log-files" + <BoolString> + '\n'
<DeleteOldReportFiles> ::= "delete-old-report-files" + <BoolString> + '\n'
<LoggingLevel> ::= "logging-level" + <LoggingLevelOption> + '\n'
<ErrorLoggingLevel> ::= "error-logging-level" + <LoggingLevelOptions> + '\n'
<LoggingLevelOption> ::= "manager" | "child" | "rsync"
<Path> ::= "path" + <PathString> + '\n'
<PathString> ::= <FilenameString> + [ "/" + <PathString> ]
<RsyncBehavior> ::= "rsync-behavior" + ( "*" | <Integer-255> ) + "=" + ( "ok" | "retry" | "fail" | "retry-without-hardlinks" ) + '\n'
<RsyncConnectionType> ::= "rsync-connection-type" + ( "local" | "remote" | "server" ) + '\n'
<RsyncHardlink> ::= "rsync-hardlink" + <BoolString> + '\n'
<RsyncLocalPath> ::= "rsync-local-path" + <PathString> + '\n'
<RsyncOptions> ::= ( "rsync-options" + <String> + '\n' ) | ( "<rsync-options>\n" + <RsyncOptionBlock> + "</rsync-options>\n" )
<RsyncParallel> ::= "rsync-parallel" + <Integer> + '\n'
<IOPollInterval> ::= "io-poll-interval" + <Integer> + '\n'
<RsyncRemotePath> ::= "rsync-remote-path" + <PathString> + '\n'
<RsyncRemoteModule> ::= "rsync-remote-module" + <String> + '\n'
<RsyncRemoteUser> ::= "rsync-remote-user" + <String> + '\n'
<RsyncRemotePort> ::= "rsync-remote-port" + <Integer> + '\n'
<RsyncRetryCount> ::= "rsync-retry-count" + <Integer> + '\n'
<RsyncTimeout> ::= "rsync-timeout" + <Integer> + '\n'
<String> ::= "\"" + <Any number of characters, using C-style escapes> + "\""
<TimestampResolution> ::= "timestamp-resolution" + ( "year" | "month" | "day" | "hour" | "minute" | "second" ) + '\n'
<Vault> ::= "vault" + <WildcardPathString> + '\n'
<VaultOverflowBehavior> ::= "vault-overflow-behavior" + ( "quit" | "delete-oldest" | "delete-until-free" ) + '\n'
<VaultOverflowBlocks> ::= "vault-overflow-blocks" + <Integer-50> + '\n'
<VaultOverflowInodes> ::= "vault-overflow-inodes" + <Integer-50> + '\n'
<VaultSelectionBehavior> ::= "vault-selection-behavior" + ( "max-free" | "round-robin" ) + '\n'
<WildcardFilenameString> ::= <Any valid file or directory name, including wildcard characters>
<WildcardPathString> ::= <WildcardFilenameString> <+ [ "/" <+ <WildcardPathString> ]
/usr/local/etc/rvm.conf The default configuration file.  Rvm will search for this configuration file first unless the --no-default-config command line option is used.
/var/log/rvm The default log directory.  Rvm will create log files under this directory.  This may be modified with the log-dir configuration command.
Vaults One or more directories must be specified in the configuration file(s) as a vault under which to create archives.  See the vault configuration command for more information.
link-catalog-dir An optional directory under which rvm will create relative links to all archives on all vaults.  See the link-catalog-dir configuration command for more information.
rsync(1), rsyncd.conf(5), SSH(1)
This version of rvm is still in beta testing.  The interfaces and infrastructure is considered to be completed, although additions and alterations may be made, and bugs may yet to be found and resolved.
Bug reports and feature requests may be sent to the author.  Due to the author's lack of time, the reports that will be given the most attention are the ones accompanied by a patch file.
The author welcomes all patch submissions.
Rvm is given to the public as-is with no guarantee of it's functionality, either expressed or implied, and the author takes no responsibility for damages that may result from it's use or misuse.
Rvm was written by Michael Peek.  See the RVM home page for author contact information.
Occasionally the author fancies that he knows what he is doing.  It is at these times more than at any other that his coworkers should cower in fear.
The latest version of rvm may always be found at: http://rvm.sourceforge.net http://freshmeat.net/projects/rvm
Here are some quick one-liners that you might find useful:
tail -f *.log* | awk '/STATUS REPORT:/,/> $/ {print}'
cat <timestamp>.log | grep 'Spawning child process' | cut -c32-44 | while read jobid; do cat <timestamp>.log | grep $jobid | gvim -Rn - ; done
VIMDIFF(1)                   General Commands Manual                  VIMDIFF(1)
vimdiff - edit between two and eight versions of a file with Vim and show differences
vimdiff [options] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
Vimdiff starts Vim on two up to eight files.  Each file gets its own window.  The differences between the files are highlighted.  This is a nice way to inspect changes and to move changes from one version to another version of the same file.
See vim(1) for details about Vim itself.
When started as gvimdiff the GUI will be started, if available.
In each window the 'diff' option will be set, which causes the differences to be highlighted. The 'wrap' and 'scrollbind' options are set to make the text look good. The 'foldmethod' option is set to "diff", which puts ranges of lines without changes in a fold.  'foldcolumn' is set to two to make it easy to spot the folds and open or close them.
Vertical splits are used to align the lines, as if the "-O" argument was used.  To use horizontal splits instead, use the "-o" argument.
For all other arguments see vim(1).
vim(1)
Most of Vim was made by Bram Moolenaar, with a lot of help from others. See ":help credits" in Vim.
SMBPASSWD(5)              File Formats and Conventions              SMBPASSWD(5)
smbpasswd - The Samba encrypted password file
smbpasswd
This tool is part of the samba(7) suite.
smbpasswd is the Samba encrypted password file. It contains the username, Unix user id and the SMB hashed passwords of the user, as well as account flag information and the time the password was last changed. This file format has been evolving with Samba and has had several different formats in the past.
The format of the smbpasswd file used by Samba 2.2 is very similar to the familiar Unix passwd(5) file. It is an ASCII file containing one line for each user. Each field within each line is separated from the next by a colon. Any entry beginning with '#' is ignored. The smbpasswd file contains the following information for each user:
name This is the user name. It must be a name that already exists in the standard UNIX passwd file.
uid This is the UNIX uid. It must match the uid field for the same user entry in the standard UNIX passwd file. If this does not match then Samba will refuse to recognize this smbpasswd file entry as being valid for a user.
Lanman Password Hash This is the LANMAN hash of the user's password, encoded as 32 hex digits. The LANMAN hash is created by DES encrypting a well known string with the user's password as the DES key. This is the same password used by Windows 95/98 machines. Note that this password hash is regarded as weak as it is vulnerable to dictionary attacks and if two users choose the same password this entry will be identical (i.e. the password is not "salted" as the UNIX password is). If the user has a null password this field will contain the characters "NO PASSWORD" as the start of the hex string. If the hex string is equal to 32 'X' characters then the user's account is marked as disabled and the user will not be able to log onto the Samba server.
WARNING !!  Note that, due to the challenge-response nature of the SMB/CIFS authentication protocol, anyone with a knowledge of this password hash will be able to impersonate the user on the network. For this reason these hashes are known as plain text equivalents and must NOT be made available to anyone but the root user. To protect these passwords the smbpasswd file is placed in a directory with read and traverse access only to the root user and the smbpasswd file itself must be set to be read/write only by root, with no other access.
NT Password Hash This is the Windows NT hash of the user's password, encoded as 32 hex digits. The Windows NT hash is created by taking the user's password as represented in 16-bit, little-endian UNICODE and then applying the MD4 (internet rfc1321) hashing algorithm to it.
This password hash is considered more secure than the LANMAN Password Hash as it preserves the case of the password and uses a much higher quality hashing algorithm. However, it is still the case that if two users choose the same password this entry will be identical (i.e. the password is not "salted" as the UNIX password is).