# phpman > man > rrdxport(1)

[RRDXPORT(1)](https://www.chedong.com/phpMan.php/man/RRDXPORT/1/markdown)                                    rrdtool                                   [RRDXPORT(1)](https://www.chedong.com/phpMan.php/man/RRDXPORT/1/markdown)



## NAME
       rrdxport - Export data in XML format based on data from one or several RRD

## SYNOPSIS
       **rrdtool** **xport** [**-s**|**--start** _seconds_] [**-e**|**--end** _seconds_] [**-m**|**--maxrows** _rows_] [**--step** _value_]
       [**--json**] [**-t**|**--showtime**] [**--enumds**] [**--daemon**|**-d** _address_] [**DEF:**_vname_**=**_rrd_**:**_ds-name_**:**_CF_]
       [**CDEF:**_vname_**=**_rpn-expression_] [**XPORT:**_vname_[**:**_legend_]]

## DESCRIPTION
       The **xport** function's main purpose is to write an XML formatted representation of the data
       stored in one or several **RRD**s. It can also extract numerical reports.

       If no _XPORT_ statements are found, there will be no output.

### -s --start
           The time when the exported range should begin. Time in seconds since epoch (1970-01-01)
           is required. Negative numbers are relative to the current time. By default one day worth
           of data will be printed.  See also "AT-STYLE TIME SPECIFICATION" in rrdfetch for a
           detailed explanation on how to specify time.

           See "OUTPUT FORMAT" below for details on how this affects the output.

### -e --end
           The time when the exported range should end. Time in seconds since epoch.  See also "AT-
           STYLE TIME SPECIFICATION" in rrdfetch for a detailed explanation on how to specify time.

           See "OUTPUT FORMAT" below for details on how this affects the output.

### -m --maxrows
           This works like the **-w**|**--width** parameter of _rrdgraph_.  In fact it is exactly the same,
           but the parameter was renamed to describe its purpose in this module. See _rrdgraph_
           documentation for details.

       **--step** _value_ (default automatic)
           See rrdgraph documentation.

       **--daemon**|**-d** _address_
           Address of the rrdcached daemon. If specified, a "flush" command is sent to the server
           before reading the RRD files. This allows **rrdtool** to return fresh data even if the daemon
           is configured to cache values for a long time.  For a list of accepted formats, see the
           **-l** option in the rrdcached manual.

             rrdtool xport --daemon unix:/var/run/rrdcached.sock ...

### -t --showtime
           include the time into each data row.

### --json
           produce json formatted output (instead of xml)

### --enumds
           The generated xml should contain the data values in enumerated tags.

            <v0>val</v0><v1>val</v1>

       **DEF:**_vname_**=**_rrd_**:**_ds-name_**:**_CF_
           See _rrdgraph_ documentation.

       **CDEF:**_vname_**=**_rpn-expression_
           See _rrdgraph_ documentation.

       **XPORT:**_vname_[**:**_legend_]
           At least one _XPORT_ statement should be present. The values referenced by _vname_ are
           printed. Optionally add a legend.

## OUTPUT FORMAT
       The output is enclosed in an **xport** element and contains two blocks. The first block is
       enclosed by a **meta** element and contains some meta data. The second block is enclosed by a
       **data** element and contains the data rows.

       Let's assume that the _xport_ command looks like this:

         rrdtool xport \
                 --start now-1h --end now \
                 DEF:xx=host-inout.lo.rrd:output:AVERAGE \
                 DEF:yy=host-inout.lo.rrd:input:AVERAGE \
                 CDEF:aa=xx,yy,+,8,* \
                 XPORT:xx:"out bytes" \
                 XPORT:aa:"in and out bits"

       The resulting meta data section is (the values will depend on the RRD characteristics):

         <meta>
           <start>1020611700</start>
           <step>300</step>
           <end>1020615600</end>
           <rows>14</rows>
           <columns>2</columns>
           <legend>
             <entry>out bytes</entry>
             <entry>in and out bits</entry>
           </legend>
         </meta>

       The resulting data section is:

         <data>
           <row><t>1020611700</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020612000</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020612300</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020612600</t><v>3.4113333333e+00</v><v>5.4581333333e+01</v></row>
           <row><t>1020612900</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020613200</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020613500</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020613800</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020614100</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020614400</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020614700</t><v>3.7333333333e+00</v><v>5.9733333333e+01</v></row>
           <row><t>1020615000</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020615300</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>
           <row><t>1020615600</t><v>NaN</v><v>NaN</v></row>
         </data>

       All the statistics in the output will use the same step. The first sample will be the first
       sample starting immediately after **--start**. The last sample will be the one ending at or
       immediately after **--end**.

       Each sample has a timestamp and one or more values. The timestamps associated with a value in
       RRDtool ALWAYS represent the time the sample was taken. Since any value you sample will
       represent some sort of past state your sampling apparatus has gathered, the timestamp will
       always be at the end of the sampling period.

       RRDtool does not store the actual samples, but does internal resampling of the values
       presented to it. Nevertheless when a data value is presented with a single timestamp the
       timestamp is at the end of the period the value represents. Note that the timestamp itself is
       outside the period the sample is valid for. For more details about this, see PDP calculation
       explanation.

       So the time range for a sample with a timestamp is actually from "timestamp - step" inclusive
       to "timestamp" exclusive.

       The first line of the sample output:

           <row><t>1020611700</t><v>3.4000000000e+00</v><v>5.4400000000e+01</v></row>

       therefore means that the values for the interval 1020611400 to 1020611699 were 3.4 and 54.4
       for "out bytes" and "in and out bits" respectively, because the value was taken at
       1020611700.

## EXAMPLE 1
         rrdtool xport \
                 DEF:out=if1-inouts.rrd:outoctets:AVERAGE \
                 XPORT:out:"out bytes"

## EXAMPLE 2
         rrdtool xport \
                 DEF:out1=if1-inouts.rrd:outoctets:AVERAGE \
                 DEF:out2=if2-inouts.rrd:outoctets:AVERAGE \
                 CDEF:sum=out1,out2,+ \
                 XPORT:out1:"if1 out bytes" \
                 XPORT:out2:"if2 out bytes" \
                 XPORT:sum:"output sum"

## ENVIRONMENT VARIABLES
       The following environment variables may be used to change the behavior of "rrdtool xport":

       **RRDCACHED**___**ADDRESS**
           If this environment variable is set it will have the same effect as specifying the
           "--daemon" option on the command line. If both are present, the command line argument
           takes precedence.

## AUTHOR
       Tobias Oetiker <<tobi@oetiker.ch>>



1.7.2                                        2022-03-17                                  [RRDXPORT(1)](https://www.chedong.com/phpMan.php/man/RRDXPORT/1/markdown)
