Provided by: mbuffer_20241007+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)

Thomas Maier-Komor                                  R20241007                                         mbuffer(1)