Provided by: mbuffer_20240707+ds1-1_amd64 bug

NAME

       mbuffer - measuring buffer

SYNTAX

       mbuffer [options]

DESCRIPTION

       mbuffer  buffers  I/O  operations  and displays the throughput rate. It is multi-threaded,
       supports network connections, multiple output targets, and  many  more  options  than  the
       standard buffer command.

OPTIONS

       -b <num>
              Use num blocks for buffer (default is determined on startup).

       -s <size>
              Use blocks of size bytes for buffer (default is determined on startup).

       -m <size>
              Use a total of size bytes for buffer (default 2% of available memory) - size can be
              set with a trailing character (b and B for Byte, k for kByte, M for  MByte,  G  for
              Gigabyte, and with % for a percentage of total physical memory).

       -L     Lock  buffer  in  memory  - this option is not available for file-based buffers and
              requires mbuffer to be set-UID root (use with care).

       -d     Use block-size of device for output (needed for some devices, slows output down).

       -D <size>
              Assume an output volume of size bytes  (default  infinite)  after  which  a  volume
              change  will be initiated. Small values are useful for the timely testing of multi-
              volume runs; accurate values if your device doesn't properly signal end  of  media.
              Size  can  be  set  with a trailing character (b and B for Byte, k for kByte, M for
              MByte, or G for Gigabyte).

       -P <num>
              Start writing after the buffer has been filled to num% (default 0 - start at once).

       -p <num>
              Start reading after the buffer has dropped below fill-ratio of num% (default 100  -
              start at once).

       -i <filename>
              Use  filename  as  input instead of the standard input (needs to be given for multi
              volume support). If filename is -, input is read from standard input.

       -o <filename>
              Use filename as output instead of the standard output (needs to be given for  multi
              volume support, will enable use of sendfile if available). If filename is -, output
              is written to standard output. The option  -o  can  be  passed  multiple  times  to
              specify multiple outputs.

       --append
              Open next output file given via option -o in append mode.

       --truncate
              Truncate next output file given via option -o when opening it.

       -I <port>
              Use  network  port port as input instead of the standard input. If given a hostname
              and a port in the form hostname:port, only the given host is allowed to connect.

       -O <hostname:port>
              Write output to hostname:port instead of the standard output (will  enable  use  of
              sendfile  if  available).  This  option  can be used multiple times to send data to
              multiple machines.

       -n <num>
              num  volumes  in  input  device  (requires  use  of  option  -i  for  input  device
              specification, pass 0 as argument if mbuffer should prompt for every new volume).

       -t     Use a memory-mapped temporary file as buffer (use with huge buffers).

       -T <file>
              As -t but use file as buffer.

       -l <file>
              Log messages to file instead of standard error output.

       -u <num>
              Pause num microseconds after each write - might increase performance on some drives
              with very low performance (< 1 MB/sec).

       -r <rate>
              Set the maximum read rate to rate. rate can  be  given  in  either  Bytes,  kBytes,
              MBytes,  or  GBytes  per  second. To do so, use an appropriate suffix (i.e. k,M,G).
              This option is useful if you have a tape  that  is  capable  of  transferring  data
              faster  than  the host can handle it. In this case you can use this option to limit
              the transfer rate and keep the tape running. Be aware that this is  both  good  for
              your tape drive, and enhances overall performance, by avoiding tape screwing.

       -R <rate>
              Same as above only for setting the transfer limit for the writer.

       -f     Overwrite output file if it exists already.

       -a <time>
              The device used is an autoloader which takes time seconds to load a new tape.

       -A <cmd>
              The  device  used  is  an  autoloader  which uses cmd to load the next volume. Pass
              </bin/false> as an autoload command to suppress the warning  message  that  appears
              when run without controlling terminal (e.g.  via cron). Like this the autoload will
              fail and mbuffer will terminate with an error message when reaching the end of  the
              tape.

       -v <level>
              Set  verbose  level  to  num.  Valid  values  are  0..6  (0 = none, 1 = errors, 2 =
              warnings, 4 = information messages, 5 = debugging messages,  6  =  I/O  debugging).
              Higher values include lower values messages.

       -q     Quiet - do not display the status on the standard error output.

       -Q     Quiet - do not log the status in the log file.

       -c     Write  with  synchronous  data integrity support - This option forces all writes to
              complete before continuing. This enables errors to be  reported  earlier  and  more
              precisely,  but  might  decrease performance. Especially systems with high level of
              data integrity support suffer a huge performance  hit.  Others  might  seem  to  be
              unaffected, but just neglect support for full synchronous data integrity.

       -e     Stop processing on any kind of error.

       -H, --md5
              Generate a MD5 hash of transferred data.

       --hash <alg>
              Use algorithm alg, if alg is 'list' possible algorithms are listed.

       --pid  Print  PID  of this instance. This option can help you to figure out which instance
              of mbuffer to kill, if multiple are running and one is hanging  due  to  a  network
              issue.  Printing  of the PID can also be triggered by adding "printpid = 1" to your
              .mbuffer.rc file.

       -W <timeout>
              Activates a watchdog that gets triggered every timeout seconds and  checks  whether
              I/O  activity has stalled. If either channel has stalled for a complete period, the
              watchdog writes an error message and terminates mbuffer via SIGINT. Be  aware  that
              the  watchdog  is unaware of tape-change activities. So choose the watchdog timeout
              greater that the worst-case  tape-change  time.  The  watchdog  is  activated  with
              parsing  option  -W  or  after parsing all options. To avoid that the watchdog will
              trigger during network initialization, put the option -W after -I and -O.

       -4     Force IPv4 mode for the following network I/O options on command line.

       -6     Force IPv6 mode for the following network I/O options on command line.

       -0     Choose IPv4/IPv6 mode on demand.

       --no-direct
              Omit use of O_DIRECT - e.g. to enable compression on btrfs.

       --tcpbuffer
              Size for TCP buffer in bytes. Size can be set with a trailing character  (b  and  B
              for Byte, k for kByte, M for MByte, or G for Gigabyte).

       --tcptimeo <time>
              Set  the  TCP  timeout  threshold.  The  default  value  is  10s. Arguments without
              dimension are interpreted as usec. Argument dimensions can be us, ms, s or  sec,  m
              or min, h.

       --tapeaware
              Keep  writing to the very end of the tape.  LTO drives tell the OS as they approach
              the end of the tape, which Linux passes on to userspace by returning  a  'no  space
              left' error on every second write operation.  Normally the first of these errors is
              treated as the end of the tape and the next volume will be called for, however with
              this  option,  writes  will  continue until two in a row fail with 'no space left',
              indicating the real end of the tape.  This will allow a little extra data to fit on
              each tape.

       --direct
              Use direct I/O for temporary file buffer.

       -h, --help
              Output help information and exit.

       -V, --version
              Output version information and exit.

DEFAULT VALUES

       The  default  values  for  most  options  can  be  set as key = value pairs in one or more
       configuration files. See the sample mbuffer.rc  files  for  available  options  and  their
       default values. Configuration files are read in following sequence listed below:

       - /etc/mbuffer.rc
       - $PREFIX/etc/mbuffer.rc
       - $HOME/.mbuffer.rc
       - $MBUFFERRC

       The  default  values  given  in  the  files  above are overridden by options passed on the
       command-line.

ENVIRONMENT VARIABLES

       If TMPDIR is set, mbuffer allocates storage for file-based buffers in this  directory.  If
       TMPDIR is unset, /var/tmp will be used.
       MBUFFERRC can be used to set a custom mbuffer.rc config file.
       MBUFFER_VOL volume id info (set for autoloader command).
       MBUFFER_NUMIN number of bytes read (set for autoloader command).
       MBUFFER_NUMOUT number of bytes written (set for autoloader command).

FILES

       $PREFIX/bin/mbuffer
       /var/tmp/mbuffer-*
       ~/.mbuffer.rc

EXAMPLES

       To run this program with the default options just type:

       mbuffer

       Using  mbuffer  to  do  a  backup  with  tar  to the default tape device. Options for this
       example: memory-mapped temporary file with a size of 10 Megabytes, start after 80% of  the
       buffer have been filled.

       tar cf - mydirectory | gzip | mbuffer -t -m 10M -P 80 -f -o $TAPE

       Using  mbuffer  with  3  tapes  for  input and extracting the contents in the current work
       directory:

       mbuffer -n 3 -i $TAPE | gzip -dc | tar xf -

       Using mbuffer to write to multiple tape volumes:

       tar cf - /usr | mbuffer -f -o $TAPE

       Write to multiple tapes and erase every tape before writing:

       tar cf - /usr | mbuffer -A "echo next tape; read a < /dev/tty; mt erase $TAPE" -f -o $TAPE

       Making a backup via network:

       tape server: mbuffer -I 8000 -f -o $TAPE

       backup client: tar zcf - /home | mbuffer -O tapeserver:8000

       Distributing a directory tree to multiple machines:

       master: tar cf - /tree_to_clone | mbuffer -O clone0:8000 -O clone1:8000

       clones: mbuffer -I master:8000 | tar xf -

EXITCODE

       mbuffer returns 0 upon success. Any kind of failure will yield a non-zero exit code.

AUTHORS

       Thomas Maier-Komor <thomas@maier-komor.de>

DONATIONS

       If you like this software, and use it for production  purposes  in  your  company,  please
       consider  making  a  donation to support this work.  You can donate directly via PayPal to
       the author's e-mail address (thomas@maier-komor.de).

HOMEPAGE

       http://www.maier-komor.de/mbuffer.html

LICENSE

       This software is published under GNU General Public  License  V3.  See  file  LICENSE  for
       details.

SEE ALSO

       buffer(1)