################################
Import/Export de base de données
################################

Il est possible d'importer et exporter directement le contenu de la base de
données de Waarp Transfer depuis/vers un fichier. Cela est utile lorsque
plusieurs instances de Waarp Transfer ont des éléments en communs (partenaires,
règles...) afin d'éviter de devoir renseigner ces éléments plusieurs fois. Cela
permet également faire une sauvegarde du contenu de la base.

Les fichiers d'import/export sont en format JSON. Leur documentation complète
est disponible :any:`ici <reference-backup-json>`.

Export
======

Pour exporter la configuration de Waarp Transfer existante, la commande est
``waarp-transferd export``. Cette commande va récupérer les éléments demandés
depuis la base de données de Waarp Transfer, puis va les écrire dans un fichier.

Les options suivantes sont requises pour que la commande puisse s'exécuter :

- ``-c``: le fichier de configuration de Waarp Transfer (contient les
  informations de connexion à la base de données).
- ``-f``: le nom du fichier vers lequel les données seront exportées (par défaut
  le fichier sera nommé ``waarp-transfer-export.json``).
- ``-t``: les éléments à exporter, l'option peut être répétée pour exporter
  plusieurs éléments. Les valeurs acceptées sont ``rules``, ``servers``,
  ``partners`` ou ``all``.

Par exemple, la commande suivante exporte les serveurs et les partenaires de la
Waarp Transfer vers le fichier ``transfer_backup.json`` :

.. code-block:: shell

   waarp-transferd export -c 'waarp-transferd.ini' -f 'transfer_backup.json' -t 'servers' -t 'partners'


Import
======

Pour importer un fichier de sauvegarde, la commande est ``waarp-transferd
import``. Cette commande va récupérer les éléments demandés dans le fichier
donné, puis va les insérer dans la base de données de Transfer. La commande
requiert les options suivantes :

- ``-c``: le fichier de configuration de Waarp Transfer (contient les
  informations de connexion à la base de données).
- ``-s``: le fichier source de l'import.
- ``-t``: les éléments à importer. L'option peut être répétée pour importer
  plusieurs éléments, les valeurs acceptées sont ``rules``, ``servers``,
  ``partners`` ou ``all``.
- ``-r``: les tables de la base de données seront vidées avant d'importer les
  nouveaux éléments depuis le fichier (seules les tables concernées par l'import
  seront vidées). Pour les scripts, l'option ``force-reset-before-import`` est
  disponible afin d'outrepasser le message de confirmation.

Par exemple, la commande suivante importe les serveurs et les partenaires depuis
le fichier ``transfer_backup.json`` et les insère dans la base de données :

.. code-block:: shell

   waarp-transferd import -c 'waarp-transferd.ini' -s 'transfer_backup.json' -t 'servers' -t 'partners'


La commande ``import`` inclue également une option ``-d`` ou ``--dry-run``
permettant de simuler l'import du fichier, mais sans appliquer les changements.
Cela peut être utile pour tester si le fichier source est dans un format correct
sans risquer d'insérer des éléments invalides dans la base de données.
