The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
To move Jellyfin metadata and cache safely, first identify the server’s actual data, configuration, and cache directories, then stop Jellyfin, copy those directories to the destination drive, point the installation to the new paths, and verify the existing libraries, users, plugins, and settings before deleting the original copy. Do not treat this as a fresh-server migration: preserve the existing database and configuration files in place at their new locations.
The exact procedure depends on whether Jellyfin runs as a Linux package, Windows service, portable application, Docker or Podman container, or another appliance. Jellyfin can keep data, configuration, cache, web files, and logs in separate locations, so generic paths are only starting points.
What Jellyfin stores, and what you are moving
“Metadata” is not normally one folder named metadata. Jellyfin’s server state is divided into several directory types. The data directory contains the databases and much of the downloaded artwork and library state. The configuration directory contains server configuration. The cache directory holds temporary or regenerable files, including cached images and other working data. Web files and logs may be separate again.
For a same-server relocation, move the directories that contain the state you want to preserve. Moving only the cache does not move your library database or users. Moving only the data directory while leaving configuration overrides unchanged can make Jellyfin start with an unexpected path or fail to find its database.
#1 Best Overall
- Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Data directory
The data directory is the most important location for an existing installation. It commonly contains the internal database, plugin data, and metadata generated for libraries. Keep its directory structure and files intact. Jellyfin’s documented precedence for the data path is the --datadir command-line option, then the JELLYFIN_DATA_DIR environment variable, followed by the platform default.
Configuration directory
The configuration directory stores server settings and configuration files. Its controls are --configdir and JELLYFIN_CONFIG_DIR, followed by the installation’s default. If you move data but not configuration, verify that the existing configuration still points to the intended data and cache locations.
Cache directory
The cache directory is controlled by --cachedir or JELLYFIN_CACHE_DIR, followed by the platform default. Cache files can often be regenerated, but moving the existing cache can avoid a long period of image and thumbnail regeneration. A cache drive should be reliable and fast enough for frequent small reads and writes.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesOther directories
Jellyfin also documents separate locations for web files and logs. Do not move them automatically unless you have a reason and have identified their configured paths. A relocation plan should list every directory you intend to change, rather than assuming that data, configuration, and cache are siblings.
Find the real paths before touching files
Check the running installation instead of copying a path from a different guide. Jellyfin’s Dashboard Paths view is useful for mapping the paths used by an existing server. Also record the installed Jellyfin version, the operating system, the account or service identity that runs Jellyfin, and whether any paths are set by a service file, startup script, environment file, or container definition.
Rank #2
- Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
| Installation situation | Documented example or rule | What to verify |
|---|---|---|
| Debian or Ubuntu package | Data commonly uses /var/lib/jellyfin; configuration commonly uses /etc/jellyfin. |
Confirm package overrides, cache location, and the service account on this host. |
| Windows service | The documented default data path is C:ProgramDataJellyfinServer. |
Check service properties, any command-line overrides, and the account assigned to the service. |
| Windows tray or portable installation | Defaults can differ from a Windows service installation. | Inspect the launch method and its configured arguments or environment variables. |
| Docker or Podman | The effective data is wherever the container’s persistent /config volume is sourced, unless you override the paths. |
Inspect the compose file or podman/docker run definition, including container-side paths. |
Do not assume all three directories are together. Linux packages, Windows services, portable builds, and container images can use different defaults. Write down the current path for data, configuration, and cache, and note whether each path is on a local disk, removable disk, or network-backed storage.
Prepare a recoverable move
Plan the relocation while Jellyfin is still running, but do not copy a changing database and then expect it to be a consistent backup. Jellyfin’s manual backup and restore guidance starts by stopping the server. Use the same principle for a directory move.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Pre-move checklist
- Confirm the destination drive is mounted at a stable path that will be available whenever Jellyfin starts.
- Check free space against the current data, configuration, and cache directories, plus room for growth.
- Decide which directories will move and which will remain in their current locations.
- Record the current Jellyfin version and the running service or container identity.
- Make a separate, recoverable copy before changing any path settings.
- Ensure the destination filesystem supports the permissions, ownership, filename lengths, and case behavior your installation needs.
Why the original copy must remain
Do not delete or empty the old directories immediately. Start Jellyfin against the new paths, inspect the dashboard, open several libraries, test a user login, and check plugins and scheduled tasks. Keep the old copy until you have completed those checks and, ideally, one backup cycle. If the new drive is not mounted during a reboot, the old copy gives you a straightforward rollback.
Step-by-step relocation procedure
- Record the effective paths. Use Dashboard Paths and the installation’s service, startup, or container configuration to identify data, configuration, cache, and any paths you intend to move. Record the current version and the service account.
- Stop Jellyfin completely. Stop the system service, application, or container, then confirm that no Jellyfin process still has the database open. A clean stop prevents new writes while files are copied.
- Create the backup copy. Copy the selected directories to independent backup storage or another protected location. A backup is more useful if it can be restored without relying on the destination drive.
- Copy to the new drive. Preserve the complete directory hierarchy, file contents, timestamps where practical, and ownership or permissions. Compare file counts and total sizes, and check that databases, plugin directories, and artwork files exist at the destination.
- Set the new paths. Use the mechanism appropriate to the installation:
--datadir,--configdir, and--cachedir; the correspondingJELLYFIN_*_DIRvariables; a service definition; or container mounts. Change only the paths you have deliberately copied. - Fix access rights. Grant the account running Jellyfin read and write access to the new data, configuration, and cache directories. On a service installation, the interactive administrator account is often not the account that needs access.
- Start Jellyfin and inspect it. Confirm that the server starts without creating a new empty configuration. Check libraries, users, playback settings, plugins, scheduled tasks, artwork, and recent activity.
- Test a restart. Restart the service or container and verify that the destination drive is mounted early enough for Jellyfin to see it. A path that works only after manual mounting is not a completed relocation.
- Retain and then retire the old copy. Keep the original directories until the new setup has survived validation and a backup. Rename or archive the old copy rather than deleting it immediately, so rollback remains possible.
Linux package installations
For a typical Debian or Ubuntu package, the documented examples are /var/lib/jellyfin for data and /etc/jellyfin for configuration. Your package may have overrides, so verify the effective values first.
A practical workflow is to stop the service, copy the directories with a tool that preserves attributes, update the service’s environment or command-line options, correct ownership, and start the service again. For example, an administrator might use a command such as sudo systemctl stop jellyfin to stop the service and an attribute-preserving copy tool such as rsync -a for the file transfer. These are examples, not a universal Jellyfin command sequence: service names, environment-file locations, mount points, and ownership commands vary by distribution and package.
Rank #3
- Easily store and access 1TB to content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop. Reformatting may be required for Mac
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Place path overrides where the package actually reads them. Changing a shell variable in your own terminal does not necessarily change a systemd service’s environment. After editing the service configuration, reload the service manager as required by your distribution, then start Jellyfin and inspect its logs if it does not come up.
Windows service installations
For a Windows service, the documented default data path is C:ProgramDataJellyfinServer, but a tray or portable installation can use another location. Inspect the service’s executable arguments and configured environment before copying anything.
The Windows service guide recommends the Network Service account and requires appropriate access to the directories Jellyfin uses. If you move files to another volume, grant that service identity read and write permission on the new data, configuration, and cache directories. Giving access only to your personal Windows account can leave Jellyfin unable to open its database or write thumbnails.
Stop the Jellyfin service from the Services console or your normal service-management method, copy the directories while the service is stopped, change the service configuration or environment variables, and start it again. Check Event Viewer and Jellyfin’s log location if startup fails. Do not remove the original ProgramData copy until the service has started successfully and the dashboard shows the existing server rather than first-run setup.
Docker and Podman containers
With a container, moving a host directory is not enough. The container must mount the new host directory, and the path inside the container must match the path Jellyfin is configured to use. A host path such as /srv/jellyfin-cache has no meaning to Jellyfin if it is not mounted at the container path selected by the image or environment variables.
Rank #4
- Easily store and access 4TB of content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Map each persistent directory deliberately
| Jellyfin role | Container-side setting | Host-side requirement |
|---|---|---|
| Data | JELLYFIN_DATA_DIR or the image’s configured data path |
Bind-mount or attach persistent storage at exactly that container path. |
| Configuration | JELLYFIN_CONFIG_DIR or the image’s configured configuration path |
Mount the copied configuration directory at the same path used before the move. |
| Cache | JELLYFIN_CACHE_DIR or the image’s configured cache path |
Mount the new cache directory and ensure it is writable by the container user. |
Before restarting, compare the old and new container definitions. If you change both the host source and the container destination, update the environment variables and every dependent mount consistently. For a Linux-to-container move, Jellyfin’s migration guidance emphasizes that paths inside the container must match the paths Jellyfin uses. Media mounts also need to remain available under the paths expected by the library definitions; changing a media path is a separate operation from moving server metadata and cache.
Stop and remove only the old container definition as appropriate for your deployment, not the persistent data. Start the updated container, check its logs, and verify that it opens the existing database. If the container presents the first-run wizard, stop it and recheck the mounts before allowing it to initialize a new server.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Choose a suitable destination drive
The destination should be selected by workload and reliability, not simply by available capacity. Compare the current directory sizes and growth, interface compatibility with the host, local versus network attachment, expected read/write activity, and how the new location will be backed up.
Keep the database on local storage
Jellyfin’s storage documentation states: “The Jellyfin database should also be stored locally and not on a network storage device.” Network latency, disconnects, and file-locking behavior make a network share a poor location for the active database. A locally attached second drive is different from a network share; it can be a suitable destination if it remains mounted and dependable.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The same storage documentation gives a broad estimate of 10 to 100 GB for the database of a moderate-sized library. This is not a minimum requirement or a prediction for every installation. Measure your own data directory, account for artwork and plugin growth, and leave free space for maintenance and backups.
Best Value
- [Upgraded Version] - This external hard drive features a mirrored logo stripe combined with a striped anti-slip design, and the rounded corners of the casing make it easier to grip. The stripes also have a heat dissipation function, ensuring stable and fast data transfer.
- 【Ultra-thin and quiet】 - The motherboard adopts JMicron 578 noise-free solution, giving you a quiet working environment. Lightweight and portable size designed to fit in your pocket for easy portability.
- 【Ultra-Fast Data Transfers】 - Pairing this external hard drive with JMicron 578 solution USB 3.0 and USB 2.0 interfaces enables blazing-fast data transfer. It boasts theoretical read speeds of up to 125MB/s and write speeds of up to 103MB/s.
- 【Plug and Play】 - With no software to install, just plug it in and the drive is ready to use.The hard disk chip is wrapped with an aluminum anti-interference layer to increase heat dissipation and protect data.
- 【What You Get】 - 1 x Portable Hard Drive, 1 x USB 3.0 Cable, 1 x User Manual, Gift-type shell packaging ,Three-year manufacturer's warranty and free technical support services.
When an SSD makes sense
For TrueNAS SCALE, Jellyfin recommends datasets on an SSD storage pool for configuration and cache. That supports choosing SSD storage for this use case when your host and budget justify it. The guidance does not establish a universal drive model, interface, capacity, or speed, so select hardware compatible with your server and backup plan rather than treating one specification as mandatory.
Capacity and reliability checklist
- Measure data, configuration, and cache separately; cache may be smaller than data but can be regenerated.
- Leave headroom for database growth, artwork, logs, temporary files, and a staging copy.
- Prefer a local, continuously available device for the active database.
- Use a filesystem and mount configuration that preserve the permissions Jellyfin needs.
- Include the new directories in your normal backup schedule.
- Consider drive health monitoring and a replacement plan, because moving data does not create redundancy.
Verify that the move worked
Do not judge success solely by whether the process starts. A newly initialized Jellyfin server can also start, but it will lack your existing state.
- Open the dashboard and confirm the expected server name and settings.
- Open several libraries and verify item counts, artwork, descriptions, and playback history.
- Sign in with an existing user and check permissions and parental controls.
- Confirm installed plugins, plugin settings, scheduled tasks, and transcoding preferences.
- Trigger a harmless metadata or image operation and verify that new files appear on the destination cache or data path.
- Restart the service or container and repeat the checks.
- Inspect free space, ownership, and the latest Jellyfin log entries.
Troubleshooting common failures
| Symptom | Likely cause | Action |
|---|---|---|
| First-run setup appears | Jellyfin cannot see the copied configuration or database, or the container mount points to an empty directory. | Stop Jellyfin, verify each effective path and mount, and restore the original path settings if necessary. |
| Libraries are missing or empty | The data directory was not copied completely, or the service is using a different data path. | Compare the destination with the original copy and recheck --datadir or JELLYFIN_DATA_DIR. |
| Database or plugin errors | Files were copied while Jellyfin was running, permissions changed, or the filesystem is unavailable. | Stop the server, restore from the clean backup, correct ownership and mount availability, then retry. |
| Artwork regenerates constantly | The cache path is empty, read-only, or points to an ephemeral container layer. | Mount the copied cache or a persistent new cache directory and grant write access. |
| Windows service will not start | The Network Service account lacks permission on the destination, or the drive is not available at startup. | Grant the service identity access and ensure the volume is mounted before the service starts. |
| Container starts but changes disappear | The new directory is not a persistent bind mount or named volume. | Review the container definition and confirm that the host path is mounted at the configured container path. |
| Jellyfin works until reboot | The destination drive mounts late, changes drive letters, or is not mounted automatically. | Use a stable mount configuration and test a full reboot before retiring the original copy. |
Moving metadata is not the same as migrating to a new server
A directory relocation keeps the same Jellyfin instance and should preserve its existing database and configuration. A migration to a new Jellyfin instance is a different task. Jellyfin warns that its internal databases cannot be copied or adjusted easily as part of a migration. Do not use a new-instance migration procedure as a shortcut for changing the storage location on the same server.
If you are changing operating systems, service identities, container paths, or server machines at the same time, treat that as a migration project. Preserve backups, map paths carefully, and expect additional work for ownership and media path changes.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

