type=page
status=published
title=copy-config
next=create-admin-object.html
prev=configure-managed-jobs.html
~~~~~~

copy-config
===========

[[copy-config-1]][[GSRFM00011]][[copy-config]]

copy-config
-----------

Copies an existing named configuration to create another configuration

[[sthref107]]

=== Synopsis

[source]
----
asadmin [asadmin-options] copy-config [--help] 
[--systemproperties (name=value)[:name=value]*]
source-configuration-name destination-configuration-name
----

[[sthref108]]

=== Description

The `copy-config` subcommand creates a named configuration in the
configuration of the domain administration server (DAS) by copying an
existing configuration. The new configuration is identical to the copied
configuration, except for any properties that you specify in the
`--systemproperties` option.

The `default-config` configuration is copied when a standalone sever
instance or standalone cluster is created.

This subcommand is supported in remote mode only.

[[sthref109]]

=== 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.
`--systemproperties`::
  Optional attribute name-value pairs for the configuration. These
  properties override port settings in the configuration.
+
  The following properties are available:
+
  `ASADMIN_LISTENER_PORT`;;
    This property specifies the port number of the HTTP port or HTTPS
    port through which the DAS connects to the instance to manage the
    instance. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `HTTP_LISTENER_PORT`;;
    This property specifies the port number of the port that is used to
    listen for HTTP requests. Valid values are 1-65535. On UNIX,
    creating sockets that listen on ports 1-1024 requires superuser
    privileges.
  `HTTP_SSL_LISTENER_PORT`;;
    This property specifies the port number of the port that is used to
    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
    creating sockets that listen on ports 1-1024 requires superuser
    privileges.
  `IIOP_LISTENER_PORT`;;
    This property specifies the port number of the port that is used for
    IIOP connections. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges.
  `IIOP_SSL_LISTENER_PORT`;;
    This property specifies the port number of the port that is used for
    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges.
  `IIOP_SSL_MUTUALAUTH_PORT`;;
    This property specifies the port number of the port that is used for
    secure IIOP connections with client authentication. Valid values are
    1-65535. On UNIX, creating sockets that listen on ports 1-1024
    requires superuser privileges.
  `JAVA_DEBUGGER_PORT`;;
    This property specifies the port number of the port that is used for
    connections to the Java Platform Debugger Architecture (JPDA)
    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
    debugger. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `JMS_PROVIDER_PORT`;;
    This property specifies the port number for the Java Message Service
    provider. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `JMX_SYSTEM_CONNECTOR_PORT`;;
    This property specifies the port number on which the JMX connector
    listens. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `OSGI_SHELL_TELNET_PORT`;;
    This property specifies the port number of the port that is used for
    connections to the Apache Felix Remote Shell
    (`http://felix.apache.org/site/apache-felix-remote-shell.html`).
    This shell uses the Felix shell service to interact with the OSGi
    module management subsystem. Valid values are 1-65535. On UNIX,
    creating sockets that listen on ports 1-1024 requires superuser
    privileges.

[[sthref110]]

=== Operands

source-configuration-name::
  The name of the configuration that you are copying.
destination-configuration-name::
  The name of the configuration that you are creating by copying the
  source configuration.
+
  The name must meet the following requirements:
+
  * The name may contain only ASCII characters.
  * The name must start with a letter, a number, or an underscore.
  * The name may contain only the following characters:
  ** Lowercase letters
  ** Uppercase letters
  ** Numbers
  ** Hyphen
  ** Period
  ** Underscore
  * The name must be unique in the domain and must not be the name of a
  another named configuration, a cluster, a \{product---name} instance ,
  or a node.
  * The name must not be `domain`, `server`, or any other keyword that
  is reserved by \{product---name}.

[[sthref111]]

=== Examples

[[GSRFM456]][[sthref112]]

==== Example 1   Copying a Configuration

This example copies the `default-config` configuration to the
`pmdsaconfig` configuration, overriding the settings for the following
ports:

* HTTP listener port
* HTTPS listener port

[source]
----
asadmin> copy-config 
--systemproperties HTTP_LISTENER_PORT=2000:HTTP_SSL_LISTENER_PORT=3000 
default-config pmdsaconfig

Command copy-config executed successfully.
----

[[sthref113]]

=== Exit Status

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

[[sthref114]]

=== See Also

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

link:delete-config.html#delete-config-1[`delete-config`(1)],
link:list-configs.html#list-configs-1[`list-configs`(1)]


