007revad/Synology_app_mover

Easily move Synology packages from 1 volume to another volume, or backup and restore

Shell

1,150

751 commits

updated Oct 9, 2026

See the code

README

Synology app mover

Badge Donate


Now available as a Synology package

See https://github.com/007revad/Syno_App_Mover


Description

Easily move Synology packages from one volume to another volume

You just select the package and the destination volume and the script will stop the app, move it, update the symlinks then start the app.

Handy for moving packages to an SSD volume, or to another volume so you can delete the original volume.

Includes Backup and Restore modes.

  • Supports DSM 7. Not fully tested with DSM 6.
  • If backing up to a USB drive the partition's file system should be ext3, ext4 of btrfs.

Packages confirmed working

NOTE: Just in case, you should backup your docker compose files or portainer stacks.

Click here to see list

The icons in this table are Copyright © 2004-2026 Synology Inc. or Copyright the 3rd party package developer.

Package Center NameSystem NameResult
Active Backup for BusinessActiveBackupOK
Active Backup for Google WorkspaceActiveBackup-GSuiteOK
Active Backup for Microsoft 365ActiveBackup-Office365OK
Advanced Media ExtensionsCodecPackOK
AntiVirus by McAfeeAntiVirus-McAfeeOK
AntiVirus EssentialAntiVirusOK - Use v4.2.88 or later
Apache HTTP Server 2.4Apache2.4OK
AQC111 driveraqc111OK - 3rd party package link
Audio StationAudioStationOK
AvrLoggerAvrLoggerOK - community package link
Bitdefender for MailPlusBitDefenderForMailPlusOK I think
C2 Identity LDAP ServerC2IdentityLDAPAgentOK
Central Management SystemCMSOK
Channels DVRChannelsDVROK - 3rd party package link
Cloud SyncCloudSyncOK
Container Manager 24.0.2-1606ContainerManagerNo - New script version coming soon
Container Manager 24.0.2-1535 to 1543ContainerManagerOK - Some issues moving docker folder
Container Manager 20.10.23ContainerManagerOK - Can have issues with broken containers
DNS ServerDNSServerOK
DockerDockerOK
Document ViewerDocumentViewerOK
Download StationDownloadStationOK
Emby ServerEmbyServerOK
exFAT AccessexFAT-FreeOK
FFmpegffmpeg#OK - community package
GitgitOK - community package
Git ServerGitOK
Glacier BackupGlacierBackupOK - Need to run backup task again
Hyper BackupHyperBackupOK
Hyper Backup VaultHyperBackupVaultOK
JellyfinjellyfinOK
LDAP ServerDirectoryServerOK
LogAnalysisLogAnalysisOK - community package link
Log CenterLogCenterOK
Mail StationMailStationOK
MariaDB 10MariaDB10OK
Media ServerMediaServerOK
MediaInfomediainfoOK - community package
MinimServerMinimServerOK
MosquittomosquittoOK - community package
phpMyAdminphpMyAdminOK
Node.jsNode.js_v##OK
Note StationNoteStationOK
PDF ViewerPDFViewerOK
PerlPerlOK
PHPPHP#.#OK
Plex Media ServerPlexMediaServerOK
Presto File ServerPrestoServerOK
Proxy ServerProxyServerOK
Python 3.9Python3.9OK
RTL8152/RTL8153 driverr8152OK - 3rd party package link
RADIUS ServerRadiusServerOK
SMI-S ProviderSynoSmisProviderOK
Snapshot ReplicationSnapshotReplicationOK
SSO ServerSSOServerOK
Storage AnalyzerStorageAnalyzerOK
Surveillance StationSurveillanceStationOK
SynoCli Toolssynocli-"toolname"OK - community package
Synology AI ConsoleAIConsoleOK
Synology Application ServiceSynologyApplicationServiceOK
Synology CalendarCalendarOK
Synology Chat ServerChatOK
Synology ContactsContactsOK
Synology Directory ServerDirectoryServerForWindowsDomainOK
Synology Drive ServerSynologyDriveOK - see Synology Drive and Btrfs Snapshots
Synology Mail ServerMailServerOK
Synology MailPlusMailPlusOK
Synology MailPlus ServerMailPlus-ServerOK I think
Synology OfficeSpreadsheetOK
Synology PhotosSynologyPhotosOK
TailscaleTailscaleOK
Text EditorTextEditorOK
Universal ViewerUniversalViewerOK
USB CopyUSBCopysee moving_extras
Video StationVideoStationOK
Virtual Machine ManagerVirtualizationOK
VPN ServerVPNCenterOK
Web StationWebStationOK
WebDAV ServerWebDAVServerOK

Packages not tested

Click here to see list

The icons in this table are Copyright © 2004-2026 Synology Inc. or Copyright the 3rd party package developer.

PackageResult / Notes
Archiware P5
BRAVIA SignageWon't install in Container Manager. It checks if Docker is installed
Data Deposit Box
Diagnosis Tool
Domotz Network Monitoring
ElephantDrive
GateOne
GoodSync
IDrive
Jackettcommunity package
Joomla
KodiExplorer
MediaWiki
Medusacommunity package link
MEGAcmd
Monocommunity package
NAKIVO Backup and Replication
NAKIVO Transporter
PACS
Photo StationDSM 6
Radarrcommunity package
Ragic Cloud DB
Resilo Sync
Shellinaboxcommunity package
Sonarrcommunity package
Syncthing
TeamViewer
Transmissioncommunity package
Tvheadendcommunity package
VirtualHere
vtigerCRM
WebToolscommunity package
Wordpress

Download the script

  1. Download the latest version Source code (zip) from https://github.com/007revad/Synology_app_mover/releases
  2. Save the download zip file to a folder on the Synology.
  3. Unzip the zip file.

Set backup location

If you want to use use the backup and restore options you need edit the included syno_app_mover.conf file to set the location to backup to.

The syno_app_mover.conf file must be in the same folder as the syno_app_mover.sh file.

Settings in syno_app_mover.conf

# buffer is used when checking if target volume has enough space
# Add 50 GB buffer so we don't fill the target volume

buffer=50

# The backuppath is only used by Backup and Restore modes
# backuppath should be in the format of /volume/sharename/folder
# For example:
# backuppath="/volume1/backups"
#
# Note: The script will create a syno_app_mover folder in backuppath

backuppath="/volume1/backups"

# Skip backup if previous backup was done less than x minutes ago
# Set to "0" to always backup
# skip_minutes is in minutes

skip_minutes=360

# exclude setting for use when auto="all" option is used to skip specified apps
# For example:
# exclude="ContainerManager"
# exclude="DownloadStation,ContainerManager,HyperBackup"
#
# Note: You need to use the app's system name
# Run syno_app_mover.sh with the --list option to see your app's system names

exclude=

# For Docker or Container Manager's container settings json exports
# Set delete_older to age in days before old exports are deleted
# Set ignored_containers to a list of containers to not export settings
# For example:
# delete_older=7
# ignored_containers="libraspeed-1,netdata"
#
# Note you need use the container's docker name. To see their names via SSH use:
# sudo docker ps -a --format "{{.Names}}"

delete_older=30
ignored_containers=

To run the script via SSH

How to enable SSH and login to DSM via SSH

sudo -s /volume1/scripts/syno_app_mover.sh

Note: Replace /volume1/scripts/ with the path to where the script is located.

Options when running the script

There are optional flags you can use when running the script:

  -h, --help            Show this help message
  -v, --version         Show the script version
      --autoupdate=AGE  Auto update script (useful when script is scheduled)
                          AGE is how many days old a release must be before
                          auto-updating. AGE must be a number: 0 or greater

      --auto=APP        Automatically backup APP (for scheduling backups)
                          APP can be a single app or a comma separated list
                          APP can also be 'all' to backup all apps (except 
                          any you excluded in the syno_app_mover.conf)
                          Examples:
                          --auto=radarr
                          --auto=Calender,ContainerManager,radarr
                          --auto=all

                          APP names need to be the app's system name
                          View the system names with the --list option

      --restore=APP     Automatically restore APP (for scripted restores)
                          APP can be a single app or a comma separated list
                          APP can also be 'all' to restore every backed up
                          app that is currently installed
                          Examples:
                          --restore=radarr
                          --restore=Calender,ContainerManager,radarr
                          --restore=all

                          APP names need to be the app's system name
                          View the system names with the --list option

                          Restore always restores an app back to the volume
                          it's currently installed on (there's no --dest
                          option) and the app must already be installed

      --list            Display installed apps' system names

Troubleshooting

If the script won't run check the following:

  1. Make sure you download the zip file and unzipped it to a folder on your Synology (not on your computer).
  2. If the path to the script contains any spaces you need to enclose the path/scriptname in double quotes:
    sudo -s "/volume1/my scripts/syno_app_mover.sh"
    
  3. Make sure you unpacked the zip or rar file that you downloaded and are trying to run the syno_app_mover.sh file.
  4. Set the script file as executable:
    sudo chmod +x "/volume1/scripts/syno_app_mover.sh"
    

Synology Drive and Btrfs Snapshots

Synology Drive handles file versioning differently based on the underlying file system.

  • For ext4 volumes, the versioning data is stored in the internal folder (/volume1/@synologydrive/@sync/repo).
  • For Btrfs volumes, versioning is managed through Btrfs snapshots (see the Reddit thread here).

When moving Synology Drive’s database from an ext4 volume to a Btrfs volume, the @sync/repo folder containing file versioning data will not be moved to the Btrfs volume. This is because Btrfs snapshots handle versioning on the Btrfs side, while ext4 relies on the @synologydrive folder for versioning.

However, it seems that you won’t lose your file version history as long as you don’t delete the ext4 volume. The file versions appear to remain intact on the ext4 volume, and you should be able to access them as long as the volume is still available.

But, removing the ext4 volume will result in the irreversible loss of all file versions, as the versioning data is stored exclusively in the @synologydrive folder on ext4 volumes.

On the positive side, by moving the database to the Btrfs volume, you'll free up the space previously occupied by the versioning data on the ext4 volume.

For more details, check out this GitHub discussion.

Video - moving Container Manager

https://github.com/007revad/Synology_app_mover/assets/e308839a-1a3d-402b-9920-dc98901c1234

DSM 7 screenshots

Moving a package (with dependencies)


Moving packages with shared folders


Moving a package that has a volume location setting


Moving Active Backup for Business


Backing up Audio Station


Backing up with the --auto option


Output with --list option

Credits

  • wallacebrf for extensive beta testing of syno_app_mover v3.
  • ctrlaltdelete for the code to export Container Manager/Docker container's settings.
diskstation
dsm
rackstation
synology
synology-disk-station
synology-docker
synology-dsm
synology-nas
synology-package

007revad/Synology_app_mover

Easily move Synology packages from 1 volume to another volume, or backup and restore

Shell

1,150

751 commits

updated Oct 9, 2026

See the code

README

Synology app mover

Badge Donate


Now available as a Synology package

See https://github.com/007revad/Syno_App_Mover


Description

Easily move Synology packages from one volume to another volume

You just select the package and the destination volume and the script will stop the app, move it, update the symlinks then start the app.

Handy for moving packages to an SSD volume, or to another volume so you can delete the original volume.

Includes Backup and Restore modes.

  • Supports DSM 7. Not fully tested with DSM 6.
  • If backing up to a USB drive the partition's file system should be ext3, ext4 of btrfs.

Packages confirmed working

NOTE: Just in case, you should backup your docker compose files or portainer stacks.

Click here to see list

The icons in this table are Copyright © 2004-2026 Synology Inc. or Copyright the 3rd party package developer.

Package Center NameSystem NameResult
Active Backup for BusinessActiveBackupOK
Active Backup for Google WorkspaceActiveBackup-GSuiteOK
Active Backup for Microsoft 365ActiveBackup-Office365OK
Advanced Media ExtensionsCodecPackOK
AntiVirus by McAfeeAntiVirus-McAfeeOK
AntiVirus EssentialAntiVirusOK - Use v4.2.88 or later
Apache HTTP Server 2.4Apache2.4OK
AQC111 driveraqc111OK - 3rd party package link
Audio StationAudioStationOK
AvrLoggerAvrLoggerOK - community package link
Bitdefender for MailPlusBitDefenderForMailPlusOK I think
C2 Identity LDAP ServerC2IdentityLDAPAgentOK
Central Management SystemCMSOK
Channels DVRChannelsDVROK - 3rd party package link
Cloud SyncCloudSyncOK
Container Manager 24.0.2-1606ContainerManagerNo - New script version coming soon
Container Manager 24.0.2-1535 to 1543ContainerManagerOK - Some issues moving docker folder
Container Manager 20.10.23ContainerManagerOK - Can have issues with broken containers
DNS ServerDNSServerOK
DockerDockerOK
Document ViewerDocumentViewerOK
Download StationDownloadStationOK
Emby ServerEmbyServerOK
exFAT AccessexFAT-FreeOK
FFmpegffmpeg#OK - community package
GitgitOK - community package
Git ServerGitOK
Glacier BackupGlacierBackupOK - Need to run backup task again
Hyper BackupHyperBackupOK
Hyper Backup VaultHyperBackupVaultOK
JellyfinjellyfinOK
LDAP ServerDirectoryServerOK
LogAnalysisLogAnalysisOK - community package link
Log CenterLogCenterOK
Mail StationMailStationOK
MariaDB 10MariaDB10OK
Media ServerMediaServerOK
MediaInfomediainfoOK - community package
MinimServerMinimServerOK
MosquittomosquittoOK - community package
phpMyAdminphpMyAdminOK
Node.jsNode.js_v##OK
Note StationNoteStationOK
PDF ViewerPDFViewerOK
PerlPerlOK
PHPPHP#.#OK
Plex Media ServerPlexMediaServerOK
Presto File ServerPrestoServerOK
Proxy ServerProxyServerOK
Python 3.9Python3.9OK
RTL8152/RTL8153 driverr8152OK - 3rd party package link
RADIUS ServerRadiusServerOK
SMI-S ProviderSynoSmisProviderOK
Snapshot ReplicationSnapshotReplicationOK
SSO ServerSSOServerOK
Storage AnalyzerStorageAnalyzerOK
Surveillance StationSurveillanceStationOK
SynoCli Toolssynocli-"toolname"OK - community package
Synology AI ConsoleAIConsoleOK
Synology Application ServiceSynologyApplicationServiceOK
Synology CalendarCalendarOK
Synology Chat ServerChatOK
Synology ContactsContactsOK
Synology Directory ServerDirectoryServerForWindowsDomainOK
Synology Drive ServerSynologyDriveOK - see Synology Drive and Btrfs Snapshots
Synology Mail ServerMailServerOK
Synology MailPlusMailPlusOK
Synology MailPlus ServerMailPlus-ServerOK I think
Synology OfficeSpreadsheetOK
Synology PhotosSynologyPhotosOK
TailscaleTailscaleOK
Text EditorTextEditorOK
Universal ViewerUniversalViewerOK
USB CopyUSBCopysee moving_extras
Video StationVideoStationOK
Virtual Machine ManagerVirtualizationOK
VPN ServerVPNCenterOK
Web StationWebStationOK
WebDAV ServerWebDAVServerOK

Packages not tested

Click here to see list

The icons in this table are Copyright © 2004-2026 Synology Inc. or Copyright the 3rd party package developer.

PackageResult / Notes
Archiware P5
BRAVIA SignageWon't install in Container Manager. It checks if Docker is installed
Data Deposit Box
Diagnosis Tool
Domotz Network Monitoring
ElephantDrive
GateOne
GoodSync
IDrive
Jackettcommunity package
Joomla
KodiExplorer
MediaWiki
Medusacommunity package link
MEGAcmd
Monocommunity package
NAKIVO Backup and Replication
NAKIVO Transporter
PACS
Photo StationDSM 6
Radarrcommunity package
Ragic Cloud DB
Resilo Sync
Shellinaboxcommunity package
Sonarrcommunity package
Syncthing
TeamViewer
Transmissioncommunity package
Tvheadendcommunity package
VirtualHere
vtigerCRM
WebToolscommunity package
Wordpress

Download the script

  1. Download the latest version Source code (zip) from https://github.com/007revad/Synology_app_mover/releases
  2. Save the download zip file to a folder on the Synology.
  3. Unzip the zip file.

Set backup location

If you want to use use the backup and restore options you need edit the included syno_app_mover.conf file to set the location to backup to.

The syno_app_mover.conf file must be in the same folder as the syno_app_mover.sh file.

Settings in syno_app_mover.conf

# buffer is used when checking if target volume has enough space
# Add 50 GB buffer so we don't fill the target volume

buffer=50

# The backuppath is only used by Backup and Restore modes
# backuppath should be in the format of /volume/sharename/folder
# For example:
# backuppath="/volume1/backups"
#
# Note: The script will create a syno_app_mover folder in backuppath

backuppath="/volume1/backups"

# Skip backup if previous backup was done less than x minutes ago
# Set to "0" to always backup
# skip_minutes is in minutes

skip_minutes=360

# exclude setting for use when auto="all" option is used to skip specified apps
# For example:
# exclude="ContainerManager"
# exclude="DownloadStation,ContainerManager,HyperBackup"
#
# Note: You need to use the app's system name
# Run syno_app_mover.sh with the --list option to see your app's system names

exclude=

# For Docker or Container Manager's container settings json exports
# Set delete_older to age in days before old exports are deleted
# Set ignored_containers to a list of containers to not export settings
# For example:
# delete_older=7
# ignored_containers="libraspeed-1,netdata"
#
# Note you need use the container's docker name. To see their names via SSH use:
# sudo docker ps -a --format "{{.Names}}"

delete_older=30
ignored_containers=

To run the script via SSH

How to enable SSH and login to DSM via SSH

sudo -s /volume1/scripts/syno_app_mover.sh

Note: Replace /volume1/scripts/ with the path to where the script is located.

Options when running the script

There are optional flags you can use when running the script:

  -h, --help            Show this help message
  -v, --version         Show the script version
      --autoupdate=AGE  Auto update script (useful when script is scheduled)
                          AGE is how many days old a release must be before
                          auto-updating. AGE must be a number: 0 or greater

      --auto=APP        Automatically backup APP (for scheduling backups)
                          APP can be a single app or a comma separated list
                          APP can also be 'all' to backup all apps (except 
                          any you excluded in the syno_app_mover.conf)
                          Examples:
                          --auto=radarr
                          --auto=Calender,ContainerManager,radarr
                          --auto=all

                          APP names need to be the app's system name
                          View the system names with the --list option

      --restore=APP     Automatically restore APP (for scripted restores)
                          APP can be a single app or a comma separated list
                          APP can also be 'all' to restore every backed up
                          app that is currently installed
                          Examples:
                          --restore=radarr
                          --restore=Calender,ContainerManager,radarr
                          --restore=all

                          APP names need to be the app's system name
                          View the system names with the --list option

                          Restore always restores an app back to the volume
                          it's currently installed on (there's no --dest
                          option) and the app must already be installed

      --list            Display installed apps' system names

Troubleshooting

If the script won't run check the following:

  1. Make sure you download the zip file and unzipped it to a folder on your Synology (not on your computer).
  2. If the path to the script contains any spaces you need to enclose the path/scriptname in double quotes:
    sudo -s "/volume1/my scripts/syno_app_mover.sh"
    
  3. Make sure you unpacked the zip or rar file that you downloaded and are trying to run the syno_app_mover.sh file.
  4. Set the script file as executable:
    sudo chmod +x "/volume1/scripts/syno_app_mover.sh"
    

Synology Drive and Btrfs Snapshots

Synology Drive handles file versioning differently based on the underlying file system.

  • For ext4 volumes, the versioning data is stored in the internal folder (/volume1/@synologydrive/@sync/repo).
  • For Btrfs volumes, versioning is managed through Btrfs snapshots (see the Reddit thread here).

When moving Synology Drive’s database from an ext4 volume to a Btrfs volume, the @sync/repo folder containing file versioning data will not be moved to the Btrfs volume. This is because Btrfs snapshots handle versioning on the Btrfs side, while ext4 relies on the @synologydrive folder for versioning.

However, it seems that you won’t lose your file version history as long as you don’t delete the ext4 volume. The file versions appear to remain intact on the ext4 volume, and you should be able to access them as long as the volume is still available.

But, removing the ext4 volume will result in the irreversible loss of all file versions, as the versioning data is stored exclusively in the @synologydrive folder on ext4 volumes.

On the positive side, by moving the database to the Btrfs volume, you'll free up the space previously occupied by the versioning data on the ext4 volume.

For more details, check out this GitHub discussion.

Video - moving Container Manager

https://github.com/007revad/Synology_app_mover/assets/e308839a-1a3d-402b-9920-dc98901c1234

DSM 7 screenshots

Moving a package (with dependencies)


Moving packages with shared folders


Moving a package that has a volume location setting


Moving Active Backup for Business


Backing up Audio Station


Backing up with the --auto option


Output with --list option

Credits

  • wallacebrf for extensive beta testing of syno_app_mover v3.
  • ctrlaltdelete for the code to export Container Manager/Docker container's settings.
diskstation
dsm
rackstation
synology
synology-disk-station
synology-docker
synology-dsm
synology-nas
synology-package

Significant stargazers

Joe Block

1,337 followers · starred Jan 2024

Brandon Mills

228 followers · starred Oct 2024

Tom Paine

26 followers · starred Apr 2024

Clément PAPPALARDO

11 followers · starred May 2025