type=page
status=published
title=export-sync-bundle
next=flush-connection-pool.html
prev=export-http-lb-config.html
~~~~~~

export-sync-bundle
==================

[[export-sync-bundle-1]][[GSRFM00134]][[export-sync-bundle]]

export-sync-bundle
------------------

Exports the configuration data of a cluster or standalone instance to an
archive file

[[sthref1170]]

=== Synopsis

[source]
----
asadmin [asadmin-options] export-sync-bundle [--help]
--target target
[--retrieve={false|true}]
[file-name]
----

[[sthref1171]]

=== Description

The `export-sync-bundle` subcommand exports the configuration data of a
cluster or standalone instance to an archive file. The archive file can
then be used with the
link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]
subcommand to restore the configuration data.

Importing an instance's configuration data transfers the data to a host
for an instance without the need for the instance to be able to
communicate with the domain administration server (DAS). Importing an
instance's configuration data is typically required for the following
reasons:

* To reestablish the instance after an upgrade
* To synchronize the instance manually with the DAS when the instance
cannot contact the DAS

The subcommand creates an archive that contains the following files and
directories in the current domain directory:

* All the files in the following directories:
** `config`
** `docroot`

* The entire contents of the following directories and their subdirectories:
** `applications`
** ``config/``target, where target is the cluster or standalone instance
for which configuration data is being exported
** `generated`
** `lib`

This subcommand is supported in remote mode only.

[[sthref1172]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  The cluster or standalone instance for which to export configuration
  data. The `--target` option is required. +
  This option must not specify a clustered \{product---name} instance.
  If this option specifies a clustered instance, an error occurs. To
  export configuration data for a clustered instance, specify the name
  of the cluster of which the instance is a member, not the instance.
`--retrieve`::
  Specifies whether the archive file is downloaded from the DAS host to
  the host where the subcommand is run.
  Possible values are as follows:

  `true`;;
    The archive file is downloaded to the host where the subcommand is
    run.
  `false`;;
    The archive file is not downloaded and remains on the DAS host
    (default).

[[sthref1173]]

=== Operands

file-name::
  The file name and location of the archive file to which to export the data.
  The default depends on the setting of the `--retrieve` option:

  * If `--retrieve` is `false`, the default is
  `sync/`target`-sync-bundle.zip` in the current domain directory.
  * If `--retrieve` is `true`, the default is target``-sync-bundle.zip``
  in the current working directory. +
  target is the cluster or standalone instance that the `--target`
  option specifies. +
  If a relative path is specified, the directory to which the path is
  appended depends on the setting of the `--retrieve` option:

  * If `--retrieve` is `false`, the path is appended to the `config`
  subdirectory of the current domain directory.
  * If `--retrieve` is `true`, the path is appended to the current
  working directory.

+
If an existing directory is specified without a filename, the file
  name of the archive file is target``-sync-bundle.zip``, where target is
  the cluster or standalone instance that the `--target` option specifies.

[[sthref1174]]

=== Examples

[[GSRFM614]][[sthref1175]]

==== Example 1   Exporting the Configuration Data of a Cluster

This example exports the configuration data of the cluster `pmdcluster`.

[source]
----
asadmin> export-sync-bundle --target=pmdcluster
Sync bundle: /export/glassfish7/glassfish/domains/domain1/sync/
pmdcluster-sync-bundle.zip

Command export-sync-bundle executed successfully.
----

[[sthref1176]]

=== Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1177]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:import-sync-bundle.html#import-sync-bundle-1[`import-sync-bundle`(1)]


