# Moving the data repository

It may be necessary to move either the whole OMERO data directory or only the Managed Repository to a new location on the file system. This should be done with care following the steps below.

Warning

Before moving OMERO data it is wise to ensure that both the data and the database are fully backed up. See OMERO.server backup and restore.

The current location of the data repositories can be found using the fs repos command:

    $ omero fs repos

     # | Id | UUID                                 | Type    | Path
    ---+----+--------------------------------------+---------+-----------------------------------------
     0 | 1  | 309ea513-a23c-48d1-abd2-9ceed1b3ffa4 | Managed | /Users/omero/var/omero/ManagedRepository
     1 | 2  | ScriptRepo                           | Script  | /Users/omero/dist/lib/scripts
     2 | 3  | 3ec8c878-c776-48a3-b57e-2a11b0c97045 | Public  | /Users/omero/var/omero
    (3 rows)

Note

This command can be slow, omero config get can also be used to determine if `omero.data.dir` or `omero.managed.dir` have non-default values.

## Moving the OMERO data directory

If the Managed Repository is within the OMERO data directory and the whole data directory is to be moved then the following steps should be used:

    omero admin stop
    omero config set omero.data.dir NEW
    mv OLD NEW
    omero admin start

Warning

The use of omero config set is absolutely necessary here. The steps: omero admin stop, `mv`, omero admin start without omero config set could lead to an unstable situation.

For example, moving the OMERO data directory from `/Users/omero/var/omero` to `/Volumes/omero`:

    $ omero admin stop
    ...
    $ omero config set omero.data.dir /Volumes/omero
    $ mv /Users/omero/var/omero /Volumes/omero
    $ omero admin start
    ...
    $ omero fs repos

     # | Id | UUID                                 | Type    | Path
    ---+----+--------------------------------------+---------+---------------------------------
     0 | 1  | 309ea513-a23c-48d1-abd2-9ceed1b3ffa4 | Managed | /Volumes/omero/ManagedRepository
     1 | 2  | ScriptRepo                           | Script  | /Users/omero/dist/lib/scripts
     2 | 3  | 3ec8c878-c776-48a3-b57e-2a11b0c97045 | Public  | /Volumes/omero
    (3 rows)

## Moving the Managed Repository

If the Managed Repository is in a separate location from the OMERO data directory or only the Managed Repository is to be moved then the following steps should be used:

    omero admin stop
    omero config set omero.managed.dir NEW
    mv OLD NEW
    omero admin start

Warning

The use of omero config set is absolutely necessary here. The steps: omero admin stop, `mv`, omero admin start without omero config set could lead to an unstable situation.

For example, moving the Managed Repository from `/Users/omero/var/omero/ManagedRepository` to `/Volumes/imports/ManagedRepository`:

    $ omero admin stop
    ...
    $ omero config set omero.managed.dir /Volumes/imports/ManagedRepository
    $ mv /Users/omero/var/omero/ManagedRepository /Volumes/imports/ManagedRepository
    $ omero admin start
    ...
    $ omero fs repos

     # | Id | UUID                                 | Type    | Path
    ---+----+--------------------------------------+---------+-----------------------------------
     0 | 1  | 309ea513-a23c-48d1-abd2-9ceed1b3ffa4 | Managed | /Volumes/imports/ManagedRepository
     1 | 2  | ScriptRepo                           | Script  | /Users/omero/dist/lib/scripts
     2 | 3  | 3ec8c878-c776-48a3-b57e-2a11b0c97045 | Public  | /Users/omero/var/omero
    (3 rows)

Note

If `omero.managed.dir` is not set then the location of the Managed Repository will be determined by `omero.data.dir` and the OMERO directory should only be moved as a whole.

If the Managed Repository needs to be moved to a location other than that set by `omero.data.dir`, to a location outside of the OMERO data directory, for example, then `omero.managed.dir` must be set.

If `omero.managed.dir` is set then the Managed Repository and the OMERO data directory should be treated independently and thus be moved separately if necessary.

## Extending the Managed Repository

It is possible to leave the Managed Repository in place yet have newly imported image files stored on a different underlying storage volume. For example, if your `omero.managed.dir` is set to `/mnt/omero/ManagedRepository` then, as that volume fills, it would become better for new imports to be stored elsewhere. An OMERO administrator may use the omero fs mkdir subcommand to properly set up a subdirectory for that new volume in the existing Managed Repository:

    omero fs mkdir volume-B

This is the correct way to create `/mnt/omero/ManagedRepository/volume-B` ready for new imports. The new storage volume may then be mounted at that mount point. Alternatively, if the volume is already mounted elsewhere, such as `/mnt/omero/large-volume-B/`, then while the OMERO server is shut down you may create a corresponding symbolic link at `/mnt/omero/ManagedRepository/volume-B`:

    rmdir /mnt/omero/ManagedRepository/volume-B
    ln -s /mnt/omero/large-volume-B /mnt/omero/ManagedRepository/volume-B

In either case the `omero.fs.repo.path` must be updated in the server configuration. An example of adjusting its usual default value is:

    omero config set omero.fs.repo.path 'volume-B/%user%_%userId%//%year%-%month%/%day%/%time%'

After the OMERO server is started then new imports should upload onto the new storage volume. At a later date further storage volumes may be added by using this same workflow.