# Data Management System

🚧 Feature under development

The data management system is under development. Not all use cases are covered by the initial release. You can provide feedback about desired functionality on the Strapi feedback website (opens new window). The feature is available in v4.6.0 and later versions.

Occasionally you need to move data out of or into a Strapi instance. The data management system allows you to efficiently extract data from an existing instance or archive and import that data into a separate instance. Strapi provides CLI-based commands that allow you to export and import data. Common use cases include:

  • creating a data backup,
  • restoring data from a backup.

The following documentation details examples of how to use the strapi export and strapi import commands.

🤓 Using the Command Line Interface (CLI)

The strapi export and strapi import CLI commands with all of the available options are listed in the Command Line Interface documentation.

✋ CAUTION

Interactive CLI commands do not currently work with the npm package manager. For strapi export and strapi import this means the encryption key prompt is not visible in the CLI. A fix is anticipated by early March 2023. In the meantime consider using the yarn package manager.

# Export data using the CLI tool

The strapi export command, by default, exports data as an encrypted and compressed .tar.gz.enc file. The default export command exports:

  • the project configuration,
  • entities: all of your content,
  • links: relations between your entities,
  • assets: files stored in the uploads folder,
  • schemas,
  • the metadata.json file.

✋ CAUTION

Admin users and API tokens are not exported.

# Name the export file

Exported data are contained in a .tar file that is automatically named using the format export_YYYYMMDDHHMMSS. You can optionally name the exported file by passing the --file or -f option with the strapi export command. Do not include a file extension.

# Example: Export data with a custom filename


# Configure data encryption

The default strapi export command encrypts your project data using aes-128-ecb encryption and adds the file extension .enc. To use encryption you need to pass an encryption key using the -k or --key option or enter an encryption key when prompted. The encryption key is a string with no minimum character count.

💡 Encryption keys

Strong encryption keys are encouraged to protect sensitive data in your project. OpenSSL (opens new window) is a resource for generating encryption keys.

To disable encryption, pass the --no-encrypt option with the strapi export command.

# Example: Export data without encryption


# Example: Export data with the encryption --key option


# Disable data compression

The default strapi export command compresses your project data using gzip compression and adds the .gz file extension.

To disable compression, pass the --no-compress option with the strapi export command.

# Example: Export data without compression


# Export only selected types of data

The default strapi export command exports your content (entities and relations), files (assets), project configuration, and schemas. The --only option allows you to export only the listed items by passing a comma-separated string with no spaces between the types. The available values are content, files, and config. Schemas are always exported, as schema matching is used for strapi import.

✏️ NOTE

Media such as images consist of the file (asset) and the entity in the database. If you use the --only flag to export content, the asset database records are still included, and could render as broken links.

# Example: Export only entities and relations


# Exclude items from export

The default strapi export command exports your content (entities and relations), files (assets), project configuration, and schemas. The --exclude option allows you to exclude content, files, and the project configuration by passing these items in a comma-separated string with no spaces between the types. You can't exclude the schemas, as schema matching is used for strapi import.

✏️ NOTE

Media such as images consist of the file (asset) and the entity in the database. If you use the --exclude flag to remove assets, the database records are still included, and could render as broken links.

# Example: Export data excluding assets, entities, and relations


✏️ NOTE

The --exclude option and --only option cannot be used together.

# Import data using the CLI tool

️❗️ WARNING

  • strapi import deletes all existing data, including the database and uploads directory, before importing the backup file.
  • The source and target schemas must match to successfully use strapi import, meaning all content types must be identical.
  • Restored data does not include the Admin users table, which means that createdBy and updatedBy are empty in a restored instance.

# Specify the import file

To import data into a Strapi instance use the strapi import command in the project root directory. Specify the file to be imported using the -f or --file option. The filename, extension, and path are required. If the file is encrypted, you are prompted for the encryption key before the import starts.

# Example: Minimum command to import data from a file in the Strapi project root


# Provide an encryption key

If you are importing data from an encrypted file the encryption key can be passed with the strapi import command by using the -k or --key option.

# Example: Pass the encryption key with the strapi import command


# Bypass all command line prompts

When using the strapi import command, you are required to confirm that the import will delete the existing database contents. The --force flag allows you to bypass this prompt. This option is particularly useful for implementing strapi import programmatically. For programmatic use, you must also pass the --key option for encrypted files.

# Example of the --force option


# Exclude data types during import

The default strapi import command imports your content (entities and relations), files (assets), project configuration, and schemas. The --exclude option allows you to exclude content, files, and the project configuration by passing these items in a comma-separated string with no spaces between the types. You can't exclude the schemas, as schema matching is used for strapi import.

️❗️ WARNING

Any types excluded from the import will be deleted in your target instance. For example, if you exclude config the project configuration in your target instance will be deleted.

✏️ NOTE

Media such as images consist of the file (asset) and the entity in the database. If you use the --exclude flag to remove assets, the database records are still included, and could render as broken links.

# Example: exclude assets from an import


# Include only specified data types during import

The default strapi import command imports your content (entities and relations), files (assets), project configuration, and schemas. The --only option allows you to export only the listed items by passing a comma-separated string with no spaces between the types. The available values are content, files, and config. Schemas are always imported, as schema matching is used for strapi import.

✏️ NOTE

Media such as images consist of the file (asset) and the entity in the database. If you use the --only flag to import content the asset database records are still included, and could render as broken links.

# Example: import only the project configuration