From 6e251eb24fa2ba5a82c8f389de5edc1fcbacf37f Mon Sep 17 00:00:00 2001
From: Mark Craig <mark.craig@forgerock.com>
Date: Mon, 13 Jun 2011 14:42:00 +0000
Subject: [PATCH] Draft chapter on backup/restore, with 2 related <refentry>s

---
 opendj3/src/main/docbkx/shared/man-backup.xml               |  295 ++++++++++++++++++++--
 opendj3/src/main/docbkx/shared/man-restore.xml              |  252 +++++++++++++++++--
 opendj3/src/main/docbkx/admin-guide/chap-backup-restore.xml |  176 +++++++++++++
 3 files changed, 661 insertions(+), 62 deletions(-)

diff --git a/opendj3/src/main/docbkx/admin-guide/chap-backup-restore.xml b/opendj3/src/main/docbkx/admin-guide/chap-backup-restore.xml
index 056bfe0..0b0a1a2 100644
--- a/opendj3/src/main/docbkx/admin-guide/chap-backup-restore.xml
+++ b/opendj3/src/main/docbkx/admin-guide/chap-backup-restore.xml
@@ -36,6 +36,182 @@
  to backup and to restore OpenDJ data from archives, and explains portability
  of backup archives, as well as backing up server configuration
  information.</para>
+ 
+ <section>
+  <title>Backing Up Directory Data</title>
+  
+  <para>A <filename>bak/</filename> directory is provided when you install
+  OpenDJ, as a location to save binary backups. When you create a backup,
+  the <filename>bak/backup.info</filename> contains information about the
+  archive.</para>
+  
+  <para>Archives produced by the <command>backup</command> command contain
+  backups only of the directory data. Backups of server configuration are
+  found in <filename>config/archived-configs/</filename>.</para>
+ 
+  <procedure>
+   <title>To Back Up Data Immediately</title>
+   
+   <step>
+    <para>Use one of the following alternatives.</para>
+    <stepalternatives>
+     <step>
+      <para>Back up only the database for Example.com, where the data
+      is stored in the backend named <literal>userRoot</literal>.</para>
+      <screen width="80">$ backup -p 5444 -D "cn=Directory Manager" -w password \
+&gt; -n userRoot -d /path/to/OpenDJ/bak -t 0
+Backup task 20110613143715983 scheduled to start Jun 13, 2011 2:37:15 PM CEST</screen>
+     </step>
+     <step>
+      <para>Stop the server to back up Example.com data offline.</para>
+      <screen width="80">$ stop-ds 
+Stopping Server...
 
+[13/Jun/2011:14:31:00 +0200] category=BACKEND severity=NOTICE msgID=9896306
+ msg=The backend userRoot is now taken offline
+[13/Jun/2011:14:31:00 +0200] category=CORE severity=NOTICE msgID=458955
+ msg=The Directory Server is now stopped
+$ backup -n userRoot -d /path/to/OpenDJ/bak
+[13/Jun/2011:14:33:48 +0200] category=TOOLS severity=NOTICE msgID=10944792
+ msg=Starting backup for backend userRoot
+[13/Jun/2011:14:33:48 +0200] category=JEB severity=NOTICE msgID=8847446
+ msg=Archived: 00000000.jdb
+[13/Jun/2011:14:33:48 +0200] category=TOOLS severity=NOTICE msgID=10944795
+ msg=The backup process completed successfully
+$ start-ds
+... The Directory Server has started successfully</screen>
+     </step>
+     <step>
+      <para>Back up all user data on the server.</para>
+      <screen width="80">$ backup -p 5444 -D "cn=Directory Manager" -w password \
+&gt; -a -d /path/to/OpenDJ/bak -t 0
+Backup task 20110613143801866 scheduled to start Jun 13, 2011 2:38:01 PM CEST</screen>
+     </step>
+    </stepalternatives>
+   </step>
+  </procedure>
+  
+  <procedure>
+   <title>To Schedule Data Backup</title>
+   
+   <para>You can schedule data backup using <command>crontab</command>
+   format.</para>
+   
+   <step>
+    <para>Back up all user data every night at 2 AM, and notify
+    diradmin@example.com when finished, or on error.</para>
+    <screen width="80">$ backup -p 5444 -D "cn=Directory Manager" -w password -a \
+&gt; -d /path/to/OpenDJ/bak --recurringTask "00 02 * * *" \
+&gt; --completionNotify diradmin@example.com --errorNotify diradmin@example.com
+Recurring Backup task BackupTask-988d6adf-4d65-44bf-8546-6ea74a2480b0
+scheduled successfully</screen>
+   </step>
+  </procedure>
+ </section>
+
+ <section>
+  <title>Restoring Directory Data From Backup</title>
+  
+  <para>When you restore data, the procedure to follow depends on whether
+  the OpenDJ directory server is replicated.</para>
+  
+  <procedure>
+   <title>To Restore a Stand-alone Server</title>
+  
+   <step>
+    <para>Use one of the following alternatives.</para>
+    <stepalternatives>
+     <step>
+      <para>Stop the server to restore data for Example.com.</para>
+      <screen width="80">$ stop-ds
+Stopping Server...
+
+[13/Jun/2011:15:44:06 +0200] category=BACKEND severity=NOTICE msgID=9896306
+ msg=The backend userRoot is now taken offline
+[13/Jun/2011:15:44:06 +0200] category=CORE severity=NOTICE msgID=458955
+ msg=The Directory Server is now stopped
+$ restore -d /path/to/OpenDJ/bak -l
+Backup ID:          20110613080032
+Backup Date:        13/Jun/2011:08:00:45 +0200
+Is Incremental:     false
+Is Compressed:      false
+Is Encrypted:       false
+Has Unsigned Hash:  false
+Has Signed Hash:    false
+Dependent Upon:     none
+$ restore -d /path/to/OpenDJ/bak -I 20110613080032
+[13/Jun/2011:15:47:41 +0200] category=JEB severity=NOTICE msgID=8847445
+ msg=Restored: 00000000.jdb (size 341835)
+$ start-ds
+... The Directory Server has started successfully</screen>
+     </step>
+     <step>
+      <para>Schedule the restore as a task to begin immediately.</para>
+      <screen width="80">$ restore -p 5444 -D "cn=Directory Manager" -w password \
+&gt; -d /path/to/OpenDJ/bak -I 20110613080032 -t 0
+Restore task 20110613155052932 scheduled to start Jun 13, 2011 3:50:52 PM CEST</screen>
+     </step>
+    </stepalternatives>
+   </step>
+  </procedure>
+  
+  <procedure>
+   <title>To Restore a Replica</title>
+  
+   <para>When you restore a replicated server from backup, make sure the
+   backup is newer than the last purge of the replication change log (default:
+   3 days).</para>
+   
+   <step>
+    <para>Prepare the replica to be restored.</para>
+    <screen width="80">$ dsreplication pre-external-initialization -I admin -w password -X -n \
+&gt; -p 5444 -b dc=example,dc=com
+
+Preparing base DN dc=example,dc=com to be initialized externally ..... Done.
+
+Now you can proceed to the initialization of the contents of the base DN's
+ on all the replicated servers.  You can use the command import-ldif or
+ the binary copy to do so.  You must use the same LDIF file or binary copy
+ on each server.
+
+When the initialization is completed you must use the subcommand
+ 'post-external-initialization' for replication to work with the new
+ base DN's contents.</screen>
+   </step>
+   <step>
+    <para>Restore the server database from the backup archive.</para>
+    <screen width="80">$ stop-ds
+Stopping Server...
+
+[13/Jun/2011:15:44:06 +0200] category=BACKEND severity=NOTICE msgID=9896306
+ msg=The backend userRoot is now taken offline
+[13/Jun/2011:15:44:06 +0200] category=CORE severity=NOTICE msgID=458955
+ msg=The Directory Server is now stopped
+$ restore -d /path/to/OpenDJ/bak -l
+Backup ID:          20110613080032
+Backup Date:        13/Jun/2011:08:00:45 +0200
+Is Incremental:     false
+Is Compressed:      false
+Is Encrypted:       false
+Has Unsigned Hash:  false
+Has Signed Hash:    false
+Dependent Upon:     none
+$ restore -d /path/to/OpenDJ/bak -I 20110613080032
+[13/Jun/2011:15:47:41 +0200] category=JEB severity=NOTICE msgID=8847445
+ msg=Restored: 00000000.jdb (size 341835)
+$ start-ds
+... The Directory Server has started successfully</screen>
+   </step>
+   <step>
+    <para>Reinitialize replication on the replica.</para>
+    <screen width="80">$ dsreplication post-external-initialization -I admin -w password -X -n \
+&gt; -p 5444 -b dc=example,dc=com
+
+Updating replication information on base DN dc=example,dc=com ..... Done.
+
+Post initialization procedure completed successfully.</screen>
+   </step>
+  </procedure>
+ </section>
 </chapter>
 
diff --git a/opendj3/src/main/docbkx/shared/man-backup.xml b/opendj3/src/main/docbkx/shared/man-backup.xml
index e5a508d..91fd8f2 100644
--- a/opendj3/src/main/docbkx/shared/man-backup.xml
+++ b/opendj3/src/main/docbkx/shared/man-backup.xml
@@ -35,72 +35,305 @@
  </refmeta>
  <refnamediv>
   <refname>backup</refname>
-  <refpurpose>TODO one-line description</refpurpose>
+  <refpurpose>back up OpenDJ directory data</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>backup</command>
-   <command><replaceable>subcommand</replaceable></command>
-   <arg choice="opt">--options</arg>
+   <arg choice="req">options</arg>
   </cmdsynopsis>
  </refsynopsisdiv>
  <refsect1>
   <title>Description</title>
-  <para>TODO description.</para>
+  <para>This utility can be used to back up one or more directory server
+  backends.</para>
  </refsect1>
  <refsect1>
-  <title>Global Options</title>
-  <para>The following global options are supported.</para>
+  <title>Options</title>
+  <para>The following options are supported.</para>
   <variablelist>
    <varlistentry>
-    <term><option>TODO</option></term>
+    <term><option>-a, --backUpAll</option></term>
     <listitem>
-     <para>TODO Description.</para>
+     <para>Back up all backends in the server</para>
     </listitem>
    </varlistentry>
+   <varlistentry>
+    <term><option>-A, --hash</option></term>
+    <listitem>
+     <para>Generate a hash of the backup contents</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-B, --incrementalBaseID {backupID}</option></term>
+    <listitem>
+     <para>Backup ID of the source archive for an incremental backup.</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-c, --compress</option></term>
+    <listitem>
+     <para>Compress the backup content</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-d, --backupDirectory {backupDir}</option></term>
+    <listitem>
+     <para>Path to the target directory for the backup file(s)</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-i, --incremental</option></term>
+    <listitem>
+     <para>Perform an incremental backup rather than a full backup</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-I, --backupID {backupID}</option></term>
+    <listitem>
+     <para>Use the provided identifier for the backup</para>
+    </listitem>
+   </varlistentry>  
+   <varlistentry>
+    <term><option>-n, --backendID {backendName}</option></term>
+    <listitem>
+     <para>Backend ID for the backend to archive</para>
+    </listitem>
+   </varlistentry>  
+   <varlistentry>
+    <term><option>-s, --signHash</option></term>
+    <listitem>
+     <para>Sign the hash of the backup contents</para>
+    </listitem>
+   </varlistentry>  
+   <varlistentry>
+    <term><option>-y, --encrypt</option></term>
+    <listitem>
+     <para>Encrypt the backup contents</para>
+    </listitem>
+   </varlistentry>  
   </variablelist>
- </refsect1>
- <refsect1>
-  <title>Subcommands</title>
-  <para>The following subcommands are supported.</para>
   <refsect2>
-   <para>TODO Description.</para>
-   <cmdsynopsis>
-    <command>backup</command>
-    <command>TODO</command>
-    <arg choice="opt">--options</arg>
-   </cmdsynopsis>
+   <title>Task Backend Connection Options</title>
    <variablelist>
     <varlistentry>
-     <term><option>TODO</option></term>
+     <term><option>--connectTimeout {timeout}</option></term>
      <listitem>
-      <para>TODO description.</para>
+      <para>Maximum length of time (in milliseconds) that can be taken to
+      establish a connection. Use '0' to specify no time out.</para>
+      <para>Default value: 30000</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-D, --bindDN {bindDN}</option></term>
+     <listitem>
+      <para>DN to use to bind to the server</para>
+      <para>Default value: cn=Directory Manager</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-h, --hostname {host}</option></term>
+     <listitem>
+      <para>Directory server hostname or IP address</para>
+      <para>Default value: localhost.localdomain</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-j, --bindPasswordFile {bindPasswordFile}</option></term>
+     <listitem>
+      <para>Bind password file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-K, --keyStorePath {keyStorePath}</option></term>
+     <listitem>
+      <para>Certificate key store path</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-N, --certNickname {nickname}</option></term>
+     <listitem>
+      <para>Nickname of certificate for SSL client authentication</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-o, --saslOption {name=value}</option></term>
+     <listitem>
+      <para>SASL bind options</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-p, --port {port}</option></term>
+     <listitem>
+      <para>Directory server administration port number</para>
+      <para>Default value: 4444</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-P, --trustStorePath {trustStorePath}</option></term>
+     <listitem>
+      <para>Certificate trust store path</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-T, --trustStorePassword {trustStorePassword}</option></term>
+     <listitem>
+      <para>Certificate trust store PIN</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-u, --keyStorePasswordFile {keyStorePasswordFile}</option></term>
+     <listitem>
+      <para>Certificate key store PIN file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-U, --trustStorePasswordFile {path}</option></term>
+     <listitem>
+      <para>Certificate trust store PIN file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-w, --bindPassword {bindPassword}</option></term>
+     <listitem>
+      <para>Password to use to bind to the server</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-W, --keyStorePassword {keyStorePassword}</option></term>
+     <listitem>
+      <para>Certificate key store PIN</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-X, --trustAll</option></term>
+     <listitem>
+      <para>Trust all server SSL certificates</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>Task Scheduling Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>--completionNotify {emailAddress}</option></term>
+     <listitem>
+      <para>Email address of a recipient to be notified when the task
+      completes. This option may be specified more than once.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--dependency {taskID}</option></term>
+     <listitem>
+      <para>ID of a task upon which this task depends. A task will not start
+      execution until all its dependencies have completed execution.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--errorNotify {emailAddress}</option></term>
+     <listitem>
+      <para>Email address of a recipient to be notified if an error occurs
+      when this task executes. This option may be specified more than
+      once.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--failedDependencyAction {action}</option></term>
+     <listitem>
+      <para>Action this task will take should one if its dependent tasks fail.
+      The value must be one of PROCESS, CANCEL, DISABLE. If not specified
+      defaults to CANCEL.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--recurringTask {schedulePattern}</option></term>
+     <listitem>
+      <para>Indicates the task is recurring and will be scheduled according
+      to the value argument expressed in crontab(5) compatible time/date
+      pattern.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-t, --start {startTime}</option></term>
+     <listitem>
+      <para>Indicates the date/time at which this operation will start when
+      scheduled as a server task expressed in YYYYMMDDhhmmssZ format for UTC
+      time or YYYYMMDDhhmmss for local time. A value of '0' will cause the
+      task to be scheduled for immediate execution. When this option is
+      specified the operation will be scheduled to start at the specified
+      time after which this utility will exit immediately.</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>Utility Input/Output Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>--noPropertiesFile</option></term>
+     <listitem>
+      <para>No properties file will be used to get default command line
+      argument values</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--propertiesFilePath {propertiesFilePath}</option></term>
+     <listitem>
+      <para>Path to the file containing default property values used for
+      command line arguments</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>General Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>-V, --version</option></term>
+     <listitem>
+      <para>Display version information</para>
+     </listitem>
+    </varlistentry>
+     <varlistentry>
+     <term><option>-?, -H, --help</option></term>
+     <listitem>
+      <para>Display usage information</para>
      </listitem>
     </varlistentry>
    </variablelist>
   </refsect2>
  </refsect1>
  <refsect1>
-  <title>Files</title>
-  <para>TODO if command has configuration file.</para>
- </refsect1>
- <refsect1>
-  <title>Environment</title>
-  <para>TODO if command reads environment variables.</para>
- </refsect1>
- <refsect1>
   <title>Exit Codes</title>
    <variablelist>
     <varlistentry>
-     <term>TODO exit code</term>
+     <term>0</term>
      <listitem>
-      <para>TODO description.</para>
+      <para>The command completed successfully.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term>1</term>
+     <listitem>
+      <para>An error occurred while parsing the command-line arguments.</para>
      </listitem>
     </varlistentry>
    </variablelist>
  </refsect1>
  <refsect1>
   <title>Examples</title>
-  <para>TODO</para>
+  <para>The following example backs up all user data on the server.</para>
+  <screen width="80">$ backup -p 5444 -D "cn=Directory Manager" -w password \
+&gt; -a -d /path/to/OpenDJ/bak -t 0
+Backup task 20110613143801866 scheduled to start Jun 13, 2011 2:38:01 PM CEST</screen>
+
+  <para>The following example schedules back up of all user data every night at
+  2 AM, and notifies diradmin@example.com when finished, or on error.</para>
+  <screen width="80">$ backup -p 5444 -D "cn=Directory Manager" -w password -a \
+&gt; -d /path/to/OpenDJ/bak --recurringTask "00 02 * * *" \
+&gt; --completionNotify diradmin@example.com --errorNotify diradmin@example.com
+Recurring Backup task BackupTask-988d6adf-4d65-44bf-8546-6ea74a2480b0
+scheduled successfully</screen>
  </refsect1>
 </refentry>
diff --git a/opendj3/src/main/docbkx/shared/man-restore.xml b/opendj3/src/main/docbkx/shared/man-restore.xml
index b5bc838..f76fff0 100644
--- a/opendj3/src/main/docbkx/shared/man-restore.xml
+++ b/opendj3/src/main/docbkx/shared/man-restore.xml
@@ -35,72 +35,262 @@
  </refmeta>
  <refnamediv>
   <refname>restore</refname>
-  <refpurpose>TODO one-line description</refpurpose>
+  <refpurpose>restore OpenDJ directory data backups</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>restore</command>
-   <command><replaceable>subcommand</replaceable></command>
-   <arg choice="opt">--options</arg>
+   <arg choice="req">options</arg>
   </cmdsynopsis>
  </refsynopsisdiv>
  <refsect1>
   <title>Description</title>
-  <para>TODO description.</para>
+  <para>This utility can be used to restore a backup of a directory server
+     backend.</para>
  </refsect1>
  <refsect1>
-  <title>Global Options</title>
-  <para>The following global options are supported.</para>
+  <title>Options</title>
+  <para>The following options are supported.</para>
   <variablelist>
    <varlistentry>
-    <term><option>TODO</option></term>
+    <term><option>-d, --backupDirectory {backupDir}</option></term>
     <listitem>
-     <para>TODO Description.</para>
+     <para>Path to the target directory for the backup file(s)</para>
     </listitem>
    </varlistentry>
+   <varlistentry>
+    <term><option>-I, --backupID {backupID}</option></term>
+    <listitem>
+     <para>Use the provided identifier for the backup</para>
+    </listitem>
+   </varlistentry>  
+   <varlistentry>
+    <term><option>-l, --listBackups</option></term>
+    <listitem>
+     <para>List available backups in the backup directory</para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><option>-n, --dry-run</option></term>
+    <listitem>
+     <para>Verify the contents of the backup but do not restore it</para>
+    </listitem>
+   </varlistentry>  
   </variablelist>
- </refsect1>
- <refsect1>
-  <title>Subcommands</title>
-  <para>The following subcommands are supported.</para>
   <refsect2>
-   <para>TODO Description.</para>
-   <cmdsynopsis>
-    <command>restore</command>
-    <command>TODO</command>
-    <arg choice="opt">--options</arg>
-   </cmdsynopsis>
+   <title>Task Backend Connection Options</title>
    <variablelist>
     <varlistentry>
-     <term><option>TODO</option></term>
+     <term><option>--connectTimeout {timeout}</option></term>
      <listitem>
-      <para>TODO description.</para>
+      <para>Maximum length of time (in milliseconds) that can be taken to
+      establish a connection. Use '0' to specify no time out.</para>
+      <para>Default value: 30000</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-D, --bindDN {bindDN}</option></term>
+     <listitem>
+      <para>DN to use to bind to the server</para>
+      <para>Default value: cn=Directory Manager</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-h, --hostname {host}</option></term>
+     <listitem>
+      <para>Directory server hostname or IP address</para>
+      <para>Default value: localhost.localdomain</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-j, --bindPasswordFile {bindPasswordFile}</option></term>
+     <listitem>
+      <para>Bind password file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-K, --keyStorePath {keyStorePath}</option></term>
+     <listitem>
+      <para>Certificate key store path</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-N, --certNickname {nickname}</option></term>
+     <listitem>
+      <para>Nickname of certificate for SSL client authentication</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-o, --saslOption {name=value}</option></term>
+     <listitem>
+      <para>SASL bind options</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-p, --port {port}</option></term>
+     <listitem>
+      <para>Directory server administration port number</para>
+      <para>Default value: 4444</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-P, --trustStorePath {trustStorePath}</option></term>
+     <listitem>
+      <para>Certificate trust store path</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-T, --trustStorePassword {trustStorePassword}</option></term>
+     <listitem>
+      <para>Certificate trust store PIN</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-u, --keyStorePasswordFile {keyStorePasswordFile}</option></term>
+     <listitem>
+      <para>Certificate key store PIN file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-U, --trustStorePasswordFile {path}</option></term>
+     <listitem>
+      <para>Certificate trust store PIN file</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-w, --bindPassword {bindPassword}</option></term>
+     <listitem>
+      <para>Password to use to bind to the server</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-W, --keyStorePassword {keyStorePassword}</option></term>
+     <listitem>
+      <para>Certificate key store PIN</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-X, --trustAll</option></term>
+     <listitem>
+      <para>Trust all server SSL certificates</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>Task Scheduling Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>--completionNotify {emailAddress}</option></term>
+     <listitem>
+      <para>Email address of a recipient to be notified when the task
+      completes. This option may be specified more than once.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--dependency {taskID}</option></term>
+     <listitem>
+      <para>ID of a task upon which this task depends. A task will not start
+      execution until all its dependencies have completed execution.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--errorNotify {emailAddress}</option></term>
+     <listitem>
+      <para>Email address of a recipient to be notified if an error occurs
+      when this task executes. This option may be specified more than
+      once.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--failedDependencyAction {action}</option></term>
+     <listitem>
+      <para>Action this task will take should one if its dependent tasks fail.
+      The value must be one of PROCESS, CANCEL, DISABLE. If not specified
+      defaults to CANCEL.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--recurringTask {schedulePattern}</option></term>
+     <listitem>
+      <para>Indicates the task is recurring and will be scheduled according
+      to the value argument expressed in crontab(5) compatible time/date
+      pattern.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>-t, --start {startTime}</option></term>
+     <listitem>
+      <para>Indicates the date/time at which this operation will start when
+      scheduled as a server task expressed in YYYYMMDDhhmmssZ format for UTC
+      time or YYYYMMDDhhmmss for local time. A value of '0' will cause the
+      task to be scheduled for immediate execution. When this option is
+      specified the operation will be scheduled to start at the specified
+      time after which this utility will exit immediately.</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>Utility Input/Output Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>--noPropertiesFile</option></term>
+     <listitem>
+      <para>No properties file will be used to get default command line
+      argument values</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><option>--propertiesFilePath {propertiesFilePath}</option></term>
+     <listitem>
+      <para>Path to the file containing default property values used for
+      command line arguments</para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </refsect2>
+  <refsect2>
+   <title>General Options</title>
+   <variablelist>
+    <varlistentry>
+     <term><option>-V, --version</option></term>
+     <listitem>
+      <para>Display version information</para>
+     </listitem>
+    </varlistentry>
+     <varlistentry>
+     <term><option>-?, -H, --help</option></term>
+     <listitem>
+      <para>Display usage information</para>
      </listitem>
     </varlistentry>
    </variablelist>
   </refsect2>
  </refsect1>
  <refsect1>
-  <title>Files</title>
-  <para>TODO if command has configuration file.</para>
- </refsect1>
- <refsect1>
-  <title>Environment</title>
-  <para>TODO if command reads environment variables.</para>
- </refsect1>
- <refsect1>
   <title>Exit Codes</title>
    <variablelist>
     <varlistentry>
-     <term>TODO exit code</term>
+     <term>0</term>
      <listitem>
-      <para>TODO description.</para>
+      <para>The command completed successfully.</para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term>1</term>
+     <listitem>
+      <para>An error occurred while parsing the command-line arguments.</para>
      </listitem>
     </varlistentry>
    </variablelist>
  </refsect1>
  <refsect1>
   <title>Examples</title>
-  <para>TODO</para>
+  <para>The following example schedules a restore as a task to begin
+  immediately.</para>
+  <screen width="80">$ restore -p 5444 -D "cn=Directory Manager" -w password \
+&gt; -d /path/to/OpenDJ/bak -I 20110613080032 -t 0
+Restore task 20110613155052932 scheduled to start Jun 13, 2011 3:50:52 PM CEST</screen>
  </refsect1>
 </refentry>

--
Gitblit v1.10.0